相关疑难解决方法(0)

在Windows控制台应用程序中输出unicode字符串

嗨,我试图将unicode字符串输出到带有iostreams的控制台并失败.

我发现了这一点: 在c ++控制台应用程序中使用unicode字体 ,这个代码片段有效.

SetConsoleOutputCP(CP_UTF8);
wchar_t s[] = L"èéøÞ????æ?a";
int bufferSize = WideCharToMultiByte(CP_UTF8, 0, s, -1, NULL, 0, NULL, NULL);
char* m = new char[bufferSize]; 
WideCharToMultiByte(CP_UTF8, 0, s, -1, m, bufferSize, NULL, NULL);
wprintf(L"%S", m);
Run Code Online (Sandbox Code Playgroud)

但是,我没有找到任何方法来使用iostream正确输出unicode.有什么建议?

这不起作用:

SetConsoleOutputCP(CP_UTF8);
utf8_locale = locale(old_locale,new boost::program_options::detail::utf8_codecvt_facet());
wcout.imbue(utf8_locale);
wcout << L"¡Hola!" << endl;
Run Code Online (Sandbox Code Playgroud)

编辑 我找不到任何其他解决方案,而不是在流中包装此片段.希望,有人有更好的想法.

//Unicode output for a Windows console 
ostream &operator-(ostream &stream, const wchar_t *s) 
{ 
    int bufSize = WideCharToMultiByte(CP_UTF8, 0, s, -1, NULL, 0, NULL, NULL);
    char *buf = …
Run Code Online (Sandbox Code Playgroud)

c++ unicode iostream windows-console

68
推荐指数
4
解决办法
6万
查看次数

在Windows中将Unicode输出到控制台使用C++

我还在学习C++,所以忍受我和我的草率代码.我使用的编译器是Dev C++.我希望能够使用cout将Unicode字符输出到控制台.当我尝试这样的事情时:

#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
    std::cout << "Blah blah blah some gibberish unicode: ??ß??\n";
    system("PAUSE");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它会向控制台输出奇怪的字符,例如μA■Gg.为什么会这样做,我怎样才能展示ĐĄßĞĝ?或者Windows无法实现这一点?

c++ unicode console windows-xp

23
推荐指数
3
解决办法
4万
查看次数

标签 统计

c++ ×2

unicode ×2

console ×1

iostream ×1

windows-console ×1

windows-xp ×1