当我用"ñ"字符循环访问字符串时出现奇怪的结果

Weird results when I iterate through string with "ñ" char

本文关键字:结果 字符串 循环 #241 字符 访问      更新时间:2023-10-16

我有一串字符,其中一个可能的字符是字母"ñ"。我的问题是,当我尝试修改字符串或遍历字符串时,我的字符串似乎以一种奇怪的方式运行。例如,如果我有代码:

std::ifstream infile (argv[1]);
std::string texto_crudo((std::istreambuf_iterator<char>(infile)), std::istreambuf_iterator<char>());
for (int i = 0; i<texto_crudo.length(); i++){
if(es_enie(texto_crudo[i])) {
texto_crudo[i] = '$';
}
}

其中,如果 texto_crudo[i] = ñ,则返回 true,则es_enie返回 true。似乎在 ñ 所在的单元格中,它的行为好像它有两个值而不是一个值。

我设法找到了解决我的确切问题的方法。正如一些程序员所评论的那样,这是因为我的文本是 UTF-8,我需要将其转换为 iso-8859-1 以便能够正确使用"ñ"。 将字符串从 UTF-8 转换为 ISO-8859-1