c++ - 当我用“ñ”字符遍历字符串时出现奇怪的结果
问题描述
我有一串字符,其中一个可能的字符是字母“ñ”。我的问题是,当我尝试修改它或遍历字符串时,我的字符串似乎表现得很奇怪。例如,如果我有代码:
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 格式的,我需要将其转换为 iso-8859-1 才能正确使用“ñ”。 将字符串从 UTF-8 转换为 ISO-8859-1
推荐阅读
- c++ - std::multiset 为插入和比较定义比较器
- python - 如何将不同的随机值添加到 numpy 数组的 n 个元素?
- reactjs - React 组件不渲染,路径正确
- terraform - 无法在 terraform 0.12 的子模块中声明地图变量
- javascript - Jquery AJAX DELETE 请求也在同一表单上触发 POST 请求
- cmake - Cmake不改变构建标志
- mysql - 从多个表中删除(使用第一个表中的条件)
- json - Angular 9:从 HTTP get 读取 JSON
- python - 如何将 matplotlib LineCollections 与可变线宽连接起来
- assembly - 我的机器语言在 pep9 中输出 gobblygook。我没有得到什么?