c++学习之wchar_t字符类型
wchar_t是C/C++的字符类型,⼀种扩展的存储⽅式,主要⽤在国际化程序的实现中,但它不等同与Unicode编码;Unicode编码的字符⼀般是以wchar_t字符存储。
char字符类型只有8个位,只能包含256个字符,⽽像很多外⽂字符远超过256个字符,例如:中⽂、⽇⽂、韩⽂等,这些字符需要占⽤两个字节空间,所以c++提出了双字节字符类型wchar_t(或叫宽字符类型)。
wchar_t宽字符类型定义:
  wchar_t  name[]  =  L"content";
  注:wchar_t定义的是双字节类型,需要L告诉编译器content占⽤2字节的空间,否则编译产⽣类型报错。
wchar_t宽字符类型输出:
  cout输出:字节⼗六进制数据
  wcout输出:设置本地语⾔后,正常输出,未设置则发⽣流错误,需调⽤wcout.clear()清除错误后⽅能正常输出
  wprintf()输出:以宽字符形式输出
  wcout、wprintf输出内容必须使⽤L修饰。
wchar_t环境设置:
unicode字符的种类有  头⽂件:<locale>
  setlocale(LC_ALL, "chs");  // 设置为中⽂格式
⽰例代码:
1 #include <iostream>
2 #include <locale>  // 本地语⾔设置头⽂件
3
4using namespace std;
5
6
7int main(void)
8 {
9    wchar_t chinese[] = L"中国"; // 字符前添加L表⽰告诉编译器为字符分配2字节空间
10
11    cout << "chinese[] = L\"中国\"" << endl;
12
13    cout << "设置环境前,cout输出:" << chinese << endl;
14    cout << "设置环境前,wcout输出:";  // 没有输出,若Chinese内容为字符串,可以正常输出
15    wcout << chinese;
16
17/*
18未设置本地语⾔之前,wcout直接输出导致流错误,
19需要先把流错误清除,后边wcout才能正常输出
20*/
21    wcout.clear();
22    wcout << endl;
23
24// wcout << L"你好" <<endl;  // 没有设置环境前,会发⽣流错误
25    setlocale(LC_ALL, "chs");  // 设置为中⽂环境
26
27    wcout << L"你好" << endl;
28
29    cout << "设置环境后,cout输出: ";
30    cout << chinese << endl;
31    cout << "设置环境后,wcout输出:";
32    wcout << chinese;
33    cout << endl;
34    cout << "设置环境后,wprintf()输出:";
35    wprintf(chinese);
36    cout << endl;
37
38    cout << sizeof(chinese) << endl;
39return0;
40 }
终端结果: