【发布时间】:2020-05-13 11:00:34
【问题描述】:
我有一串字符,其中一个可能的字符是字母“ñ”。我的问题是,当我尝试修改它或遍历字符串时,我的字符串的行为似乎很奇怪。例如,如果我有代码:
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。似乎在 ñ 所在的单元格中,它的行为就好像它有两个值而不是一个。
【问题讨论】:
-
可能是因为文件中的文本恰好是UTF-8 编码的?
-
我不熟悉 UTF-8。我需要阅读的文件是一个 .txt 文件。如果这是问题,我该如何解决?
-
您必须替换子字符串
"ñ"(长度为2)而不是单个字符。 -
为什么这个问题的分数是-1?对我来说,这似乎是一个真正的问题。
-
使用(自定义)ReplaceAll,它将是
ReplaceAll(texto_crudo, "ñ", "$");
标签: c++