C++基本数据类型中表示字符的有两种: char、wchar_t。
char叫多字节字符,一个char占1个字节,之所以叫多字节字符是因为它表示一个英文字符时是一个字节,而中文字符时是多个字节。
wchar_t被称为宽字符,一个wchar_t占2个字节。之所以叫宽字符是因为所有的字都要赋值时,前面要加L,如:wchar_t str[3]=L”中国”;。
注意:两种字符对应的字符串函数也不一样,strlen()对应wcslen(),strcpy()对应wcscpy)一般把char类型函数中的" str"替换为" wcs"即可。
#include<iostream>
#include <stdio.h>
#include <Locale.h> //解决中文乱码问题头文件
#include <string.h>
using namespace std;
int main(){
char *str1 = "A中";
printf("%s %d\n", str1, strlen(str1));
_wsetlocale(LC_ALL, L"chs");//把输出设置为中文.
wchar_t *str2 = L"A中";//必须加L 表示字符串是unicode
wprintf(L"%s %d\n", str2, wcslen(str2));//计算字符个数,遇到\0结束
int a;
cin >> a;
return 0;
}
/*
输出结果一个为2,一个为3
*/windows中API函数后面带A与W的区别
Win32API中带字符串的API一般都有两个版本,例如CreateFileA和CreateFileW。
当然也有例外,例如GetProcAddress函数。A代表ANSI编码,W代表Unicode字符集。
Windows中的Unicode字符一般指UCS2的UTF16-LE编码。
看如下预编译指令:
#ifdef UNICODE #define MessageBox MessageBoxW #else #define MessageBox MessageBoxA #endif // !UNICODE
