我最近遇到了字符串文字并找到了一些新字符串,如u16string和u32string.我发现可以使用std :: wcout将wstring打印到控制台,但这对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;
}
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)
不确定后者有多强大,以及您需要它的效率如何。