【问题标题】:wcout and wcerr: How to get it to work with unicode?wcout 和 wcerr:如何让它与 unicode 一起工作?
【发布时间】:2013-07-05 03:47:56
【问题描述】:
#include <iostream>                           
#include <clocale>                            
#include <string>                             

int main() {                                  
    std::setlocale(LC_ALL, "en_US.utf8");     
    std::wstring str(L"Τὴ γλῶσσα μοῦ ἔδωσαν");
    std::wcout << str << std::endl;           
    std::wcerr << str << std::endl;           
}         

这不会在终端上产生任何输出。

如何让它产生 UTF-8 输出?我认为这应该是 C++ 支持的东西。

我知道我正在使用 utfcpp 库,但问题是具体是否有 stdlib 方法可以打印出 UTF8。

【问题讨论】:

  • 这取决于平台。你在跑什么?
  • OS X 在这里。我马上在 Linux 上试试这个
  • 在 Linux 上完美运行。添加了 osx 标签。
  • 你确定终端可以显示吗?
  • 阳性。我可以在 Vim 中查看包含许多很酷字形的测试文件,并通过 shell 回显它们。

标签: c++ macos unicode utf-8 io


【解决方案1】:

我是通过关注this 获得的。

std::setlocale(LC_ALL, "");是魔法咒语。

这适用于我的简单测试程序。然而,我的完整程序在打印出 wstrings 时仍然完全失败。

那很好(嗯,不,它仍然有些令人担忧),我将避免依赖 stdlib,并在 utfcpp 库的帮助下自己做,非常棒。这样我就可以使用coutcerr 来处理一切,一切都会好起来的。

【讨论】:

    猜你喜欢
    • 2014-05-21
    • 1970-01-01
    • 2023-02-02
    • 2012-12-09
    • 2014-06-06
    • 2017-01-20
    • 2017-05-08
    • 2014-12-25
    • 2010-09-14
    相关资源
    最近更新 更多