替换字符串C ++中的非unicode字符

时间:2016-11-27 16:51:24

标签: c++ unicode

我在替换函数中的非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

0 个答案:

没有答案