我最近碰到了字符串文字并找到了一些新的字符串,比如u16string和u32string。我发现可以使用std :: wcout将wstring打印到控制台,但这对u16string或u32string不起作用。如何将这些打印到控制台?
答案 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);
}
不确定后者的坚固性和效率。