如何在c ++中将u32string和u16string打印到控制台

时间:2017-08-25 05:19:37

标签: c++ string

我最近碰到了字符串文字并找到了一些新的字符串,比如u16string和u32string。我发现可以使用std :: wcout将wstring打印到控制台,但这对u16string或u32string不起作用。如何将这些打印到控制台?

1 个答案:

答案 0 :(得分:1)

我猜下面的代码可以用,但是请注意,<codecvt>在c ++ 17中已过时。

#include <iostream>
#include <string>
#include <locale>
#include <codecvt>

int main() {
  std::u16string str = u"sample";
  
  std::wstring_convert<std::codecvt_utf8<char16_t>, char16_t> converter;
  std::cout << converter.to_bytes(str) << std::endl;

  return 0;
}

也许类似的东西也可以工作,

#include <string>
#include <iostream>

int main() {
  std::u16string str(u"abcdefg");
  for (const auto& c: str)
    std::cout << static_cast<char>(c);
}

不确定后者的坚固性和效率。