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

标签 c++ string

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

最佳答案

我想下面的代码可以工作,但请注意 <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);
}
不确定后者有多健壮,以及您需要它有多高效。

关于c++ - 如何在 C++ 中将 u32string 和 u16string 打印到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45874857/

相关文章:

c++ - 为什么我的模型没有出现在 QListView 中?

c - 字符串/段错误

c++ - 使用打开的文件流访问违规阅读位置

c++ - 使用初始化列表放置 vector

c++ - 即使安装了 qt5,也强制使用 qt4 进行编译

asp.net - 正则表达式排除双空格

c++ - 让函数返回字符串而不是整数不好吗? (C++)

c++ - std::copy 的自定义插入器

r - 拆分和子串字符串列表

c - 为什么这个数组脚本不能打印正确的结果?