簡體   English   中英

如何打印unicode代碼點?

[英]How to print unicode codepoint?

如何在Linux上的C ++(gcc / clang)中將unicode代碼點打印為unicode字符? 假設我有這樣的事情:

typedef uint32_t codepoint;
codepoint cp = somefunction();

如何將cp打印為單個unicode字符? 我有en_US.UTF-8語言環境。

我搜索過,所以嘗試了:wcout,wstring,wchar_t,setlocale,codecvt(gcc中不存在)。

GNU中的std::wcout 有點 std::wcout :與C stdio同步時,C ++和CI / O子系統都需要分別本地化:

所以要么不同步

#include <iostream>
#include <cstdint>
#include <locale>
int main()
{
    std::uint32_t n = 0x98A8;

    std::wcout.sync_with_stdio(false);
    std::wcout.imbue(std::locale("en_US.utf8"));
    std::wcout << wchar_t(n) << '\n';
}

http://coliru.stacked-crooked.com/a/13b718ae11fa539e

或同時本地化

#include <iostream>
#include <cstdint>
#include <locale>
#include <clocale>
int main()
{
    std::uint32_t n = 0x98A8;

    std::setlocale(LC_ALL, "en_US.utf8");
    std::wcout.imbue(std::locale("en_US.utf8"));
    std::wcout << wchar_t(n) << '\n';
}

http://coliru.stacked-crooked.com/a/80b7d4547e1184ad

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM