首页 > 解决方案 > 当我用“ñ”字符遍历字符串时出现奇怪的结果

问题描述

我有一串字符,其中一个可能的字符是字母“ñ”。我的问题是,当我尝试修改它或遍历字符串时,我的字符串似乎表现得很奇怪。例如,如果我有代码:

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] = ñ,则 es_enie 返回 true。似乎在 ñ 所在的单元格中,它的行为就好像它有两个值而不是一个。

标签: c++

解决方案


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


推荐阅读