集结号手机短信充值:linux 下g++ 编译,中文输入输出

来源:百度文库 编辑:九乡新闻网 时间:2024/05/01 21:38:49
linux 下g++ 编译,中文输入输出2009-12-18 16:561、
在linux下用g++编译可以指定三个文件编码
-finput-charset=
这个是指定输入文件的编码的,如果源代码中含有中文字符串,需要正确指定,默认是使用locale的编码,因此你用当前的locale写源代码,直接g++就可以了。
-fexec-charset=
这个指定产生的可执行文件的字符编码,类似java的class文件,不过java的class文件只能是utf8,而这里可以选择,如果input-charset不指定,这个也不指定,默认采用locale。但是如果指定了input-charset,则这个默认就是UTF8了。
-fwide-exec-charset=
这个一般不用管,除非你想用宽字符编程,并且想修改默认实现方式。

2、窄字符的中文输入输出
一般问题不大,只要编译环境,运行环境的locale一致,一般没有问题。

3、宽字符的中文输入输出
c中可以设置setlocale(LC_ALL,"");
然后用wprintf(L"%ls\n", L"中文");即可
或者用wprintf(L"%S\n", L"中文");
printf("%ls\n", L"中文");
printf("%S\n", L"中文");

c++中用wcout, wcin
需要做如下设置:
ios_base::sync_with_stdio(false);//这行必须有
wcin.imbue(locale(""));
wcout.imbue(locale(""));

4、宽字符串用sizeof测长度,可以发现一般是每个字符占4个字节。
5、窄字符串则根据exec-charset的不同而不同。