此为VS的一个BUG,原因是本地化的问题,如下处理即可。
locale loc = locale::global(locale(""));
ifstream ifs(filename.c_str());
locale::global(loc);
在 用ifstream和ofstream打开文件前设置全局locale为本地环境,打开文件后再设置回去。用locale对象的name方法可以看到,通 过locale("")构造出的locale对象的name为"Chinese_People's Republic of China.936",而原始的locale对象的name为"C",也就是缺省的ANSI_C公约。
locale loc = locale::global(locale(""));
ifstream ifs(filename.c_str());
locale::global(loc);
在 用ifstream和ofstream打开文件前设置全局locale为本地环境,打开文件后再设置回去。用locale对象的name方法可以看到,通 过locale("")构造出的locale对象的name为"Chinese_People's Republic of China.936",而原始的locale对象的name为"C",也就是缺省的ANSI_C公约。