C++ wcin得到错误的字符输入?

C++ wcin得到错误的字符输入?,c++,unicode,console-application,C++,Unicode,Console Application,以下代码: #include <iostream> using std::wcin; using std::wcout; using std::locale; int main() { locale::global(locale("Portuguese_Brazil")); wcout << "wcin Test using \"ção\": "; // shows that wcout works properly wchar_t wci

以下代码:

#include <iostream>

using std::wcin;
using std::wcout;
using std::locale;


int main()
{
    locale::global(locale("Portuguese_Brazil"));

    wcout << "wcin Test using \"ção\": "; // shows that wcout works properly
    wchar_t wcinTest[] = L"";
    wcin >> wcinTest;
    wcout << wcinTest << " should be \"ção\".";

    return 0;
}
╬ 字符是U+2021或8225,字符是U+00E7或231

我更改了mult bytes选项,在项目属性中设置和不设置UNICODE。什么都没用

我已经将console字体设置为Consolas,这是一种能够正确显示字符的true type字体

我希望它尽可能简单且可复制,可以作为未来UNICODE控制台应用程序的标准实践


有什么想法吗?

wcinTest
是长度为1的
wchar\u t
缓冲区

当你读入它时,它溢出了。使用insead。

这终于奏效了:

#include <iostream>
#include <string>
#include <Windows.h>

using std::cin;
using std::cout;
using std::string;




int main()
{
    SetConsoleOutputCP(1252);
    SetConsoleCP(1252);

    cout << "wcin Test using \"ção\": "; // shows that wcout works properly
    string wcinTest;
    cin >> wcinTest;
    cout << wcinTest << " should be \"ção\".";

    return 0;
}
#包括
#包括
#包括
使用std::cin;
使用std::cout;
使用std::string;
int main()
{
SetConsoleOutputCP(1252);
SetConsoleCP(1252);
cout>wcinTest;

还是不行。wstring的结果是一样的。这就是我尝试的:“#include”#include使用std::wcin;使用std::wcout;使用std::wstring;使用std::locale;//使用名称空间std;int main(){locale::global(locale(“葡萄牙语巴西”))wcout>wcinTest;wcout我想我知道了一些事情。我刚刚意识到我在用locale(“葡萄牙/巴西”)修复cout输出时破坏了cin我删除了它,使用了“包含”,所有的东西都有效,我同意,但是它解决了我的特定问题,即使我不得不放弃UTF8。当前C++处理得更好,而控制台只需要使用Unicode字体。
#include <iostream>
#include <string>
#include <Windows.h>

using std::cin;
using std::cout;
using std::string;




int main()
{
    SetConsoleOutputCP(1252);
    SetConsoleCP(1252);

    cout << "wcin Test using \"ção\": "; // shows that wcout works properly
    string wcinTest;
    cin >> wcinTest;
    cout << wcinTest << " should be \"ção\".";

    return 0;
}