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


相关推荐

c++ WIndoWs应用程序 入口函数WInMAIn详解

入口函数WinMain详解类似于C程序的main函数,Win32应用程序也有一个入口函数WinMain,该函数被系统自动调用函数原型:int WINAPI WinMain( HINSTANCE hI

c++字符串(strIng 与 chAr)操作函数大全

字符串拼接查找与替换:字符串比较字符串存取字符串插入和删除string子串(子文本)功能描述:·查找:查找指定字符串是否存在·替换:在指定的位置替换字符串函数原型://查找str第一次出现位置,从pO

WIndoWs ApI据类型命名规律常用WIndoWs 数据类型

WindowsAPI数据类型的命名规律基本数据来袭包括:BYTE 字节CHAR 字符WORD 单字SHORT 短整型INT 整型指针的类型命名方式一般都在对象名前面加 LP 或者 P /*字

WIndoWs ApI获取当前进程内存使用情况 内存占有率 pprocEss_MEMorY_coUntErs

易语言 可以直接使用精易模块 进程_内存使用 (, )API:BOOL GetProcessMemoryInfo( HANDLE Process, PPROCESS_MEMO

输入法管理器(IMM)函数大全(WIndoWs cE 5.0)

imm好像要被弃用了 还是研究 TSF输入法 吧 ,虽然没啥鸟用了 但是还是搬运一下下吧EnumRegisterWordProc此函数是与一起使用的应用程序定义的回调函数ImmEnumRegister

WIndoWsApI 高频窗口控件函数: 操作控件 创建 取句柄 取标题 取文本 置标题 置文本

Win32API提供了一系列的函数来操作控件高频常用控件函数:类型说明GetDlgItem根据控件ID,取控件句柄GetDlgItemText根据控件ID,取控件文本GetDlgItemInt根据控件

mysql效率研究(二):chAr(20) 和 chAr(40) vArchAr(255)vArchAr(256)vArchAr(50)vArchAr(100) 的区别

/*varchar(255)和varchar(256) 和 varchar(50)和varchar(100) 的区别*/ $sql="create table char20(

c++ 取字符个chAr*字符(汉字字母都算一个)

的代码如下:#include <stdio.h> #include <string> int 取文本长度_字符数(char *s){//代码摘自 精易模块 文本_逐字分割(

c++中 引用&Amp;符* 的区别

简单的一句话概括:*是取数据 , &是取地址也可以理解为 &是引用 *是解引用例子1:解引用a=10;p=&a 把a的地址取出来,赋值给p,p等于一个地址* p=1000

c++定义 和 struct与clAss的区别 和初始值设置

类的创建#include<iostream> using namespace std; #include <string> class 学生类{ public: