我最近遇到了字符串文字,发现了一些新的字符串,比如 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/