我想在string
中的c++
添加变音符号。假设我想以下列方式修改wordz
字符串:
String respj = resp[j];
std::string respjz1 = respj; // create respjz1 and respjz2
std::string respjz2 = respj;
respjz1[i] = 'ź'; // put diacritic marks
respjz2[i] = 'ż';
我一直在接收:wordş
和wordĽ
(而不是wordź
和wordż
)。我试图谷歌它,但我一直得到与相反问题相关的结果 - 变音标准化到非变音标记。
答案 0 :(得分:0)
首先,String
是什么?它是否支持重音字符?
但真正的问题是编码之一。当你说“我保持
接收“,你是什么意思。字符串将包含什么
不是字符,而是表示代码点的数值
一些字符,在一些编码中。如果使用的编码
重音字符的编译器与编码相同
无论你使用什么来形象化它们,你都会得到
同一个角色。如果不是,你会得到一些东西
不同。因此,例如,取决于编码,LATIN
带点的小写字母Z(我认为你要分配的东西)
respjz2[i]
)在我的编码表中可以是0xFD或0xBF
访问(并且在大多数单字节编码中不存在);在
我通常使用的单字节编码(ISO 8859-1),这些代码
点对应拉丁小写字母Y与急性和
分别为INVERTED QUESTION MARK。
最后,没有真正的解决方案。从长远来看,我想你
应该转移到UTF-8,并尽力确保所有的
您使用的工具(以及您的用户使用的所有工具)
明白。短期来看,可能不是那么简单:因为
首先,你或多或少地坚持你的编译器
提供(除非您输入\u00BF
形式的字符
或者\u00FD
,即使这样,编译器也可以做一些有趣的事情
将它们放入字符串文字时的映射)。而且你可以
甚至不知道用户使用的其他工具。