如何有效地替换C++中的德语变音符号
How to efficiently replace german umlauts in C++?
>假设我从 API 获得几百行文本作为字符串 (C++),并且洒入该数据中的是德语变音符号,例如 ä 或 ö,需要用 ae 和 oe 替换。我熟悉编码(嗯,我已经读过 http://www.joelonsoftware.com/articles/Unicode.html),解决问题是微不足道的(基本上,搜索字符串,删除字符并添加其他 2 个)。
但是,我对C++的了解还不够多,无法快速做到这一点。我刚刚偶然发现了StringBuilder(http://www.codeproject.com/Articles/647856/4350-Performance-Improvement-with-the-StringBuilde),它大大提高了速度,但我很好奇是否有更好或更聪明的方法可以做到这一点?
如果您必须在如此小规模上提高效率,请考虑分两个阶段进行更换:
- 第一阶段计算替换后结果中的字符数。遍历字符串,并将
1
添加到每个普通字符的计数中;对于 ä 或 ö 等字符,请添加2
。 - 此时,您有足够的信息来为结果分配字符串。制作您在第一阶段计算的长度的字符串。
- 第二阶段执行实际替换:再次遍历字符串,复制常规字符,并用相应的对替换变音符号。
当它以 UTF-8 编码时,德语变音符号都是 unicode 中的双字节值,它们的替换也是如此,如 ae
或 oe
.因此,当您使用 char[] 而不是字符串时,您不必重新分配任何内存,并且可以在迭代 char[] 时替换字节。
相关文章:
- 编写一个程序,帮助Tudio将MIDI音符转换为名称和八度音阶
- C++ 转换音符中的 MIDI 音符 ID
- 插入多音符:在该值的第一次发生之前,而不是在上次发生之后
- 如何在德语大写字母 Ä, Ö, Ü, ẞ 上正确应用 C++
- Arduino压力传感器在旋律C 中跳过音符
- 每次我将(播放旋律 - )代码上传到Arduino时,我按下按钮时,它会在数组中跳过相同的音符.怎么会
- 来自 Base64 的 QT 变音符号字符
- 德语变音符号和正则表达式
- InternetCanonicalizeUrl无法解码变音符号字母
- Vkkeyscanex因德语键盘布局而失败
- QT4 获取不带变音符号的基本字符
- 谓词和元音符有什么区别?
- QAbstractTableModel和Unicode(德语元音变音符)
- 为什么Qt对我尖叫德语
- 合成歌曲时音符之间的准确延迟
- 如何在给定的 MIDI 音符/八度音阶下播放声音
- 如何有效地替换C++中的德语变音符号
- 检测所有音符头,无论是全音符还是半音符
- 如何使用德语语言环境在gdb中设置双变量
- 确定MIDI音符长度