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 }
终端结果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论