Joe*_*hor 5 c++ unicode cout visual-studio-2013
我试图在控制台输出中插入unicode值,在这种情况下为\ u250F或?。我到处搜寻,有人推荐各种各样的东西。在讨论我尝试过的内容之前,我正在使用Windows和Visual Studio 2013。
主要错误
当我尝试多个“修复程序”时(如果未指定),我总是会遇到相同的错误:
Debug Assertion Failed!
Program: ...nts\visual studio 2013\Projects\roguelike\Debug\roguelike.exe
File: f:\dd\vctools\crt\crtw32\stdio\fputc.c
Line: 48
Expression: ((_Stream->_flag & _IOSTRG) || ( fn = _fileno(_Stream),
((_textmode_safe(fn) == _IOINFO_TM_ANSI && !_tm_unicode_safe(fn))))
For more information on how your program can cause an assertion failure,
see the Visual C++ documentation on asserts
(Press Retry to debug the application)
Run Code Online (Sandbox Code Playgroud)
我尝试过的
我试图做以下所有事情来输出它:
Debug Assertion Failed!
Program: ...nts\visual studio 2013\Projects\roguelike\Debug\roguelike.exe
File: f:\dd\vctools\crt\crtw32\stdio\fputc.c
Line: 48
Expression: ((_Stream->_flag & _IOSTRG) || ( fn = _fileno(_Stream),
((_textmode_safe(fn) == _IOINFO_TM_ANSI && !_tm_unicode_safe(fn))))
For more information on how your program can cause an assertion failure,
see the Visual C++ documentation on asserts
(Press Retry to debug the application)
Run Code Online (Sandbox Code Playgroud)
std::cout << "\u250F";
Run Code Online (Sandbox Code Playgroud)
std::wcout << "\u250F";
Run Code Online (Sandbox Code Playgroud)
std::cout << L"\u250F";
Run Code Online (Sandbox Code Playgroud)
std::wcout << L"\u250F";
Run Code Online (Sandbox Code Playgroud)
std::cout << "?";
Run Code Online (Sandbox Code Playgroud)
std::wcout << "?";
Run Code Online (Sandbox Code Playgroud)
std::cout << L"?";
Run Code Online (Sandbox Code Playgroud)
我如何告诉控制台如何输出unicode
std::wcout << L"?";
Run Code Online (Sandbox Code Playgroud)
确实是问题所在。
system("chcp 65001");
Run Code Online (Sandbox Code Playgroud)
没有错误,但是什么也没做
std::locale::global(std::locale("en_US.utf8"));
Run Code Online (Sandbox Code Playgroud)
它会导致参数“非法”的位置出现错误
以下代码对我有用: \nmy ENV: vs2013, win7_x64, system locale is \'English (United States)\'
\n\nSetConsoleOutputCP(CP_UTF8);\n_setmode(_fileno(stdout), _O_U8TEXT);\nwprintf(L"Interface %s\\r\\n", pNP->pszwName); //pszwName is a wchar_t*\nRun Code Online (Sandbox Code Playgroud)\n\n另一个技巧是你的控制台字体,你的控制台字体是否包含字符\'\xe2\x94\x8f\'?
\n\ngoogle \'cmd font fontlink\' 将字体添加到您的 cmd 控制台。
\n\n在执行程序之前,在 cmd 控制台中运行“chcp 65001”。
\n| 归档时间: |
|
| 查看次数: |
3841 次 |
| 最近记录: |