【发布时间】:2021-08-05 00:25:10
【问题描述】:
我有一个带有西班牙语文本的字符串,我想像这样替换某些字符:
| character | replace-with: |
|---|---|
| á | a |
| é | e |
| í | i |
| ó | o |
| ú | u |
| ñ | n |
我试过这个没有结果:
std::string RemoverTildes(std::string str){
std::string sinTildes = str.c_str();
for(int i = 0; i < str.length(); i++){
if(sinTildes[i] == 'á'){
sinTildes[i] = 'a';
} else if(sinTildes[i] == 'é'){
sinTildes[i] = 'e';
} else if(sinTildes[i] == 'í'){
sinTildes[i] = 'i';
} else if(sinTildes[i] == 'ó'){
sinTildes[i] = 'o';
} else if(sinTildes[i] == 'ú'){
sinTildes[i] = 'u';
} else if(sinTildes[i] == 'ñ'){
sinTildes[i] = 'n';
}
}
return sinTildes;
}
我怎样才能做到这一点?有什么图书馆或什么东西可以用来做吗?
【问题讨论】:
-
什么是字符编码?您需要一个单字节字符集才能对字符串的各个字节进行比较,并且您的源代码编辑器必须使用相同的单字节字符集。如果您在(例如)UTF-8 文本编辑器中编辑您的 C++ 代码,那么您正在比较的那些字符文字将不是您所期望的。如果您的输入数据是 UTF-8,您需要查找字节序列而不是单个字节。