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

mit*_*esh 6 c++ string

我最近遇到了字符串文字并找到了一些新字符串,如u16string和u32string.我发现可以使用std :: wcout将wstring打印到控制台,但这对u16string或u32string不起作用.我怎样才能将这些打印到控制台?

Bur*_*ers 7

我猜下面的代码可以工作,但请注意,它<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;
}
Run Code Online (Sandbox Code Playgroud)

也许这样的事情也可以工作,

#include <string>
#include <iostream>

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

不确定后者有多强大,以及您需要它的效率如何。