1

我看到允许将 a 写入chara std::wostream(例如std::wcout<<"looooool";)。

如何char更改为wchar(如果发生这种情况)?

4

1 回答 1

1

当您将 achar或 c 字符串 ( char *) 发送到宽流时,ì单个八位字节(字节)将转换为 wchar widen。没有从std::string.

您不能以这种方式将多字节 UTF-8 字符发送到宽流中,因为这些字节一次转换一个。在默认语言环境中,没有从非 ascii 字符到宽字符的转换,因此转换将失败,将宽流置于错误状态。

您是否利用这种转换取决于您;标准允许它,至少对于字符和字符串文字,它对我来说似乎无害。但请注意,您发送到宽流的字符串对象必须是std::wstring,而不是std::string

于 2013-02-03T05:30:27.860 回答