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;
}