wcout 和 wcerr:如何让它与 unicode 一起工作

wcout and wcerr: How to get it to work with unicode?

本文关键字:unicode 一起 工作 wcerr wcout      更新时间:2023-10-16
#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。

我按照这个得到了它。

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

这适用于我的琐碎测试程序。但是,我的完整程序仍然完全无法打印出wstrings。

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