我在替换函数中的非unicode字符时遇到了问题。我还设置了setlocale(LC_ALL,"LITHUANIAN");
我正在使用<string> and <iostream> libraries
void string_change()
{
cout << "Enter text: ";
string text;
cin.ignore();
getline(cin, text);
for (int i=0; i<text.length(); i++)
{
if (check(text[i])==1) // checking if char is in the list
{
text[i]='_'; // replacing char in string
}
}
cout << text;
}
int check(char c)
{
switch(c) {
case 'a':
case 'A':
case 'ą':
case 'Ą':
case 'e':
case 'E':
case 'ę':
case 'Ę':
case 'ė':
case 'Ė':
case 'i':
case 'I':
case 'į':
case 'Į':
case 'y':
case 'Y':
case 'o':
case 'O':
case 'u':
case 'U':
case 'ų':
case 'Ų':
case 'ū':
case 'Ū':
return 1;
default:
return 0;
}
}
输入:“tesąęe”
我得到输出:“t_s±ę_”。
我想要的输出是:“t_s ___”
在这一点上,我都迷失了。我想它必须用unicode字符做一些事情。我正在使用Codeblocks Release 13.12 rev 9501 (2013-12-25 18:25:45) gcc 5.2.1 Linux/unicode - 64 bit