【C++基础]007_char、wchar_t、wcout、setlocale() 解决中文不能输出显示
【C++基础]007_char、wchar_t、wcout、setlocale()
1 #include<iostream> 2 using namespace std; 3 4 int main(){ 5 char ch1 = 'A'; 6 cout<<"ch1 = "<<ch1<<endl; 7 8 char ch2 = '中'; 9 cout<<"ch2 = "<<ch2<<endl; 10 11 wchar_t ch3 = '中'; 12 cout<<"ch3 = "<<ch3<<endl; 13 14 wchar_t ch4[] = L"中"; 15 cout<<"ch4 = "<<ch4<<endl; 16 17 system("pause"); 18 return 0; 19 }
上面的代码会输出什么呢?自己看看再看下面的答案:
ch1 = A ch2 = ch3 = 54992 ch4 = 0043F944 请按任意键继续. . .
我去!为什么输不了中文呢??
那要怎么输出呢!看下面的代码吧!
1 #include<iostream> 2 #include<locale> 3 using namespace std; 4 5 int main(){ 6 char ch1 = 'A'; 7 cout<<"ch1 = "<<ch1<<endl; 8 9 char ch2 = '中'; 10 cout<<"ch2 = "<<ch2<<endl; 11 12 wchar_t ch3 = '中'; 13 cout<<"ch3 = "<<ch3<<endl; 14 15 setlocale(LC_ALL, "chs"); 16 wchar_t ch4[] = L"中"; 17 wcout<<"ch4 = "<<ch4<<endl; 18 19 system("pause"); 20 return 0; 21 }
注意,我在最后一段输出里面加上了一句设置区域化的代码,代码被设置在中文环境中。同时,我用了wcout来输出中文。
上面的程序输出如下所示:
1 ch1 = A 2 ch2 = 3 ch3 = 54992 4 ch4 = 中 5 请按任意键继续. . .
没有java和c#方便啊!不过挺好玩的,呵呵!
总结:
处理双字节字符方法如下
1. 设置区域,用setlocale()方法
2. 定义字符变量,方法见代码
3. 用wcout输出