特殊字符,wcin和getline - 奇怪的行为

时间:2017-01-07 14:17:40

标签: c++

我在从控制台到wstring读取特殊字符(波兰语)时遇到问题。这是代码:

#include <locale>
#include <iostream>

int main()
{
    std::locale::global(std::locale("pl_PL.UTF-8"));
    std::wcout.imbue(std::locale("pl_PL.UTF-8")); 
    std::wcin.imbue(std::locale("pl_PL.UTF-8")); 
    std::wstring brand;
    for(int i = 0; i < 6; ++i)
    {
        std::wcout << L"Name: ";
        std::getline(std::wcin, brand);
        std::wcout << brand << std::endl;
    }
    return 0;
}

以下是示例输入/输出:

Name: abc abc
abc abc
Name: abc abć
abc abbć
Name: abć abc
abbć abc
Name: ąbc
翿ąbc
Name: ąbć
翿ąbbć
Name: ąbć ąbć
翿ąbbć  ąbbć

我该如何解决这个问题? 我使用MacOS,clang ++作为编译器,iTerm作为终端

0 个答案:

没有答案