在C++中添加一个diACCORE标记到字符串失败 我想在C++中给字符串添加一个diACCORM标记。假设我想以以下方式修改wordz字符串: String respj = resp[j]; std::string respjz1 = respj; // create respjz1 and respjz2 std::string respjz2 = respj; respjz1[i] = 'ź'; // put diacritic marks respjz2[i] = 'ż';

在C++中添加一个diACCORE标记到字符串失败 我想在C++中给字符串添加一个diACCORM标记。假设我想以以下方式修改wordz字符串: String respj = resp[j]; std::string respjz1 = respj; // create respjz1 and respjz2 std::string respjz2 = respj; respjz1[i] = 'ź'; // put diacritic marks respjz2[i] = 'ż';,c++,string,diacritics,C++,String,Diacritics,我一直在接收:单词ş和单词Ľ,而不是单词ź和单词ż。我试着用谷歌搜索它,但我不断得到与相反问题相关的结果——变音符号规范化为非变音符号 首先,什么是字符串?它是否支持重音字符 但真正的问题是编码。当你说我保持 接收,你是什么意思。字符串将包含的内容是 不是字符,而是表示代码点的数值 在某种编码中指字符。如果 重音字符的编译器与编码相同 无论你用什么来形象化它们,你都会得到 同样的性格。如果不是,你会得到一些东西 不同的因此,例如,根据编码,拉丁语 带圆点的小写字母Z,我认为您正试图分配给 res

我一直在接收:单词ş和单词Ľ,而不是单词ź和单词ż。我试着用谷歌搜索它,但我不断得到与相反问题相关的结果——变音符号规范化为非变音符号

首先,什么是字符串?它是否支持重音字符

但真正的问题是编码。当你说我保持 接收,你是什么意思。字符串将包含的内容是 不是字符,而是表示代码点的数值 在某种编码中指字符。如果 重音字符的编译器与编码相同 无论你用什么来形象化它们,你都会得到 同样的性格。如果不是,你会得到一些东西 不同的因此,例如,根据编码,拉丁语 带圆点的小写字母Z,我认为您正试图分配给 respjz2[i]在我的编码表中可以是0xFD或0xBF 在大多数单字节编码中,它是不存在的;在里面 单字节编码我通常使用ISO8859-1,这些代码 点对应于拉丁文小写字母Y,带有锐音符和 分别是倒问号

最终,没有真正的解决办法。长期来看,我想你 可能应该转移到UTF-8,并尝试确保所有 您使用的工具以及用户使用的所有工具 明白这一点。从短期来看,可能没有那么简单:因为 初学者,您或多或少被编译器的内容所困扰 提供,除非您在表单\u00BF中输入字符 或者\u00FD,即使这样,编译器也可能会做一些有趣的事情 当它将映射放入字符串文本时。你可以
甚至不知道你的用户还使用什么工具

你使用Unicode吗?这是什么编译器?检查编译器的编码吗?事实上,我使用C++函数通过RCPP插件在RR是一个统计计算环境,并认为可能有一个C++函数来强制正确的编码。如果不是,我想这可能是一个更深层次的问题,因为functon是在R中编译的。您必须首先确定环境编码。然后,您可以使用代码介绍您想要的角色。请记住,这些字符的编码可以是多字节的。例如,“ź”字符可以用utf-8写成\xe0\x85\xba Unicode字符U+017A,编码为utf-8。James Kanze,我非常感谢你的回答。我将要使用的字符集非常小,因此我将尝试执行一些基本映射。非常感谢。