宽窄字符串

1.宽窄字节的区别和重要性

char* char 都是窄字节,适配英文字母,随着国际化,,窄字节无法表示,所以引入宽字节,即unicode(规定任意字符占两个字节)  wchar-t 其原型是unsigned short

2.操作系统和编译器对宽窄的支持

api:MessageboxA 窄字节  MessageboxW 宽字节  编译器根据当前配置的编码环境定义对应的宏_UNICODE,没有定义就是窄字节,定义了则是Unicode编码 宽字节,api会自动解析对应的函数

界面开发 为了效率最好用unicode编码省去了系统转换  VS字符集配置  多字节是窄字节  Unicode是宽字节

优缺点:

unicode网络传输影响速度

宽窄字节的数据类型

窄字节  char  char*(PCHAR PSTR LPSTR)LPCSTR

宽字节  wchar-t wchar-t *(PWCHAR  PWSTR  LPWSTR)LPCWSTR

T通用类型 TCHAR(TCHAR* PTCHAR PTSTR  LPTSTR)LPCTSTR

P代表指针  str字符串  L代表长指针  C标识常量 W标识宽字节  T标识通用类型

int MessageBox(

[in, optional] HWND    hWnd,

[in, optional] LPCTSTR lpText,

[in, optional] LPCTSTR lpCaption,

[in]           UINT    uType

);

_T和_L的区别在于,_L不管你是以什么方式编译,一律以UNICODE方式保存。 #ifdef _UNICODE的时候

_T就是L

没有#ifdef _UNICODE的时候

_T就是ANSI的。

LPTSTR lpStr = new TCHAR[32];

TCHAR* szBuf = _T("Hello");

以上两句使得无论是在UNICODE编译条件下都是正确编译的。

2.宽窄字符的使用

字符串长度:

● Ansi:strlen(char *str);

● Unicode:wcslen(wchar_t *str);

● 通用函数:_tcslen(TCHAR *str);

● Ansi:int atoi(const char *str);

● Unicode:int _wtoi(const wchar_t *str);

● 通用函数:_tstoi(const TCHAR *str);

字符串拷贝:

● Ansi:strcpy(char *strDestination, const char *strSource);

● Unicode:wcscpy(wchar_t *strDestination, const wchar_t *strSource);

● 通用函数:_tcscpy(TCHAR *strDestination, const TCHAR *strSource);

int main()

{

char* p = "123";

int len_p = strlen(p);

wchar* p1 = L“456”;

int len_P1 = wcslen(p1) ;

tchar * p2 = _T("");

int len_p2 = _tcslen(p2);

int size_p = (stren(p)+1*sizeof(char));

int size_p1 = (wcslen(p1)+1*sizeof(wchar_t));

int size_p2 = (_tcslen(p2)+1*sizeof(TCHAR));

}

C++编程学习

字符串string

2024-11-15 0:21:45

C++编程学习

虚函数表 vfptr

2024-11-15 0:33:08

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索

Powered by atecplugins.com