我看到允许写 char
到 std::wostream
(例如,std::wcout<<"looooool";
)。
char
怎么样了?更改为 wchar
(如果发生这种情况)?
最佳答案
当您将一个char
或一个c 字符串(char *
) 发送到宽流时,单个八位字节(字节)将使用widen
转换为wchar。 . std::string
没有自动转换。
您不能以这种方式将多字节 UTF-8 字符发送到宽流中,因为字节是一次一个地转换的。在默认语言环境中,没有从非 ascii 字符到宽字符的转换,因此转换将失败,使宽流进入错误状态。
是否利用此转换取决于您;标准允许它,至少对于字符和字符串文字,它对我来说似乎无害。但请注意,您发送到宽流的字符串对象必须是 std::wstring
,而不是 std::string
。
关于c++ - 宽阔的溪流和炭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14669577/