引言
一直以来,C/C++对中文字符的处理时常让人摸不着头脑。
主要有下面几个原因:
文件编码方式的差异
系统环境对中文的解释有差异
不同编译器对标准库的实现有差异
而这三者往往又相互影响,暗藏玄机,让人抓狂。
在写本文之前我查阅了很多博客,关于中文的输入输出,cout,wcout,fstream,wfstream,乱码解决方案等等问题都有了十分详细的解答,但是,很多博文具有片面性。
许多博主仅仅是针对自己所使用的环境做阐述,而又没有明确指明使用了何种IDE,何种编译器,何种系统。结果就是,博主们高高兴兴的解决的自己的问题并分享出来,大家高高兴兴的点赞,觉得自己和博主的问题是同一个问题,实际情况却大相径庭。
必要的说明
文本涉及的编译器和系统:
msvc v120 Windows 8.1
mingw 4.8 32bit Windows 8.1
g++ 4.8.2 Linux 64bit
开始测试
测试之前很有必要说明一点:
A program should not mix output operations on wcout with output operations on cout (or with other narrow-oriented output operations on stdout): Once an output operation has been performed on either, the standard output stream acquires an or