VC上尝试输入输出宽字符时发现问题

在VC上尝试输入输出宽字符时发现,wcout.imbue调用,居然会影响wcin
 wstring t;
 wcin >> t; //没问题

 wcout.imbue(locale("chs"));
 wcin >> t; //键入中文时有问题

而对wclog, wcerr调用imbue,则不对cin产生影响。也就是说,wcout和wcin之间有奇特的关系。对wcin调用imbue,不会影响wcout,反过来,对wcout调用imbue,则对wcin产生影响。很显然,丛语义学上来说,这是极不自然,而且极其隐晦。wcout和wcin从语义学上来说,这两者完全是独立的。我察看了源代码,看上去似乎是fgetc这个C库的缓冲处理上有问题,但没有细究下去。

我觉得,这是vc iostream库的bug.不知道我是否可以向ms提交该bug ^_^

你可能感兴趣的:(VC上尝试输入输出宽字符时发现问题)