//char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,//char型无法表示。
//wchar_t数据类型一般为16位或32位,但不同的C或C++库有不同的规定,如GNU Libc规定//wchar_t为32位,总之,wchar_t所能表示的字符数远超char型。
//标准C中的wprintf函数以及标准C++的iostream类库中的类和对象能提供wchar_t宽字符类型的
//相关操作。
#include "pch.h"
#include<iostream>
#include<locale.h>
#include<stdio.h>
#include<Windows.h>
#include <iostream>
using namespace std;
locale loc("chs");
int main()
{
_wsetlocale(LC_ALL, L"chs");//或者setlocale(LC_ALL, "chs");
wcout.imbue(loc);
wchar_t s[] = L"字符串1";
wchar_t S[] = L"字符串2";
/*
_getws_s(s);//输入类型1
wcin >> s;//输入类型2
*/
wprintf(L"%ls\n", S);
wprintf(L"%s\n", S);
printf("%S\n", S);
/* %s 和 %S 输出区别是:
%s窄字符输出,
%ls宽字符输出,
%S输出与输出函数相反宽度的字符格式
(也就是printf因为默认支持的宽度是单字符,而%S偏要使用相反的,那么就
使用宽字符格式输出,而wprintf默认支持的宽度是宽字节,%S偏要使用相反的,
意思就是使用单字符格式输出)
*/
system("pause>nul");//输出类型1
wcout << s << endl;
system("pause>nul");//输出类型2
putwchar(s[2]);//或者printf("%lc",s[2]);
wcout << '\n' << S[0] << endl;
puts((s[2] == S[0]) ? "yes" : "no");
cout << endl;
cout << endl;
cout << endl;
system("pause");
return 0;
}