C++ 字符串操作经验集

C++ 字符串操作经验

 

1.    字符类型和字符串

char,wchar_t,CHAR,BYTE,UCHAR,WCHAR,TCHAR,TBYTE

char是C语言标准数据类型,字符型,至于由几个字节组成通常由编译器决定,一般一个字节。

wchar_t是char的Unicode版本。相当于unsigned short。一般两个字节。

CHAR 和WCHAR分别是char和wchar_t的别名,决不会等同。

TCHAR是两面派,在当前编译方式为Unicode时等价于WCHAR,而ANSI(默认)方式时又等价于CHAR。

BYTE和UCHAR都相当于unsigned char,在取得字符编码(00~FF)的时候非常有用。

TBYTE也是两面派,在当前编译方式为Unicode时等价于WCHAR,而ANSI(默认)方式时又等价于BYTE。

 

PSTR,PWSTR,PCSTR,PCWSTR,LPSTR,LPWSTR,LPCSTR,LPCWSTR

               typedef CHAR *PSTR;

               typedef WCHAR *PWSTR;

               typedef CONST CHAR *PCSTR;

               typedef CONST WCHAR *PCWSTR;

               typedef CHAR *LPSTR;

               typedef WCHAR *LPWSTR;

               typedef __nullterminated CONST CHAR *LPCSTR;

               typedef CONST WCHAR *LPCWSTR;

 

PTSTR,LPTSTR,PCTSTR,LPCTSTR

在ANSI编译方式下,PTSTRLPTSTR等价于LPSTR,在Unicode下等价于LPWSTR。

在ANSI编译方式下,PCTSTRLPCTSTR等价于LPCSTR,在Unicode下等价于LPCWSTR。

 

CStringA,CStringW,CString,XCHAR,YCHAR,PXSTR,PYSTR,PCXSTR,PCYSTR

CstringA是由CHAR组成的字符串

CStringW是由WCHAR组成的字符串

CString是由TCHAR组成的字符串

XCHAR表示和字符串组成字符相同的字符,YCHAR表示和字符串组成字符不同的字符

PXSTR表示和字符串组成字符相同的字符串,PYSTR表示和字符串组成字符不同的字符串

PCXSTR表示和字符串组成字符相同的CONST字符串,PCYSTR表示和字符串组成字符不同的CONST字符串

 

2. 字符串类型转换

用构造方法进行CStringT类之间的转换

直接调用CString,CstringA等的构造方法,把不同的字符串类作为参数,在构造中实现转换。

CString str1;

CStringA strA1(str1);        //强制转换成ANSI字符串

……对strA1进行**操作……

CString str2(strA1);       //变换回去

 

CStringT类和字符(串)之间的转换

调用CString的GetAt方法,可以得到XCHAR,即与字符串类组成字符相同的字符。

CStringA的GetAt方法得到的是CHAR,

CString的GetAt方法得到的是TCHAR,

CStringW的GetAt方法得到的是WCHAR。

此外,也可以使用象数组索引下标一样得到XCHAR,如 str1[2]等价于str1.GetAt(2)。

 

调用CString的GetBuffer方法,可以得到PXSTR,即与字符串类组成字符相同的字符串。

CStringA的GetBuffer方法得到的是LPSTR,

CString的GetBuffer方法得到的是LPTSTR,

CStringW的GetBuffer方法得到的是LPWSTR。

调用CString的GetString方法,也可以得到PCXSTR,即与字符串类组成字符相同的const字符串。

CStringA的GetBuffer方法得到的是LPCSTR,

CString的GetBuffer方法得到的是LPCTSTR,

CStringW的GetBuffer方法得到的是LPCWSTR。

 

字符(串)之间的转换

使用ATL的字符串转换宏,可以实现不同类型的字符串转换。

在宏名称里面,分别用A,W,T代表ANSI字符串,Unicode字符串,以及TCHAR字符串。

并分别用CA,CW,CT来代表相应的const字符串。

对ANSI字符串进行转换操作的宏有A2W,A2T,A2CW,A2CT。

对Unicode字符串进行转换操作的宏有W2A,W2T,W2CA,W2CT。

对TCHAR字符串进行转换操作的宏有T2W,T2A,T2CW,T2CA。

*需要注意的是: 在使用以上宏的时候,必须在程序中定义如下宏,

USES_CONVERSION;

 

3. 字符串与其他类型之间的转换

字符串和INT的相互转换

通过atoi,_wtoi,_ttoi可以分别把ANSI,Unicode和TCHAR字符串转换成INT。

通过_itoa,_itow,_itot可以分别把INT转换成ANSI,Unicode和TCHAR字符串。

 

字符串和LONG的相互转换

通过atol,_wtol,_ttol可以分别把ANSI,Unicode和TCHAR字符串转换成LONG

通过_ltoa,_ltow,_ltot可以分别把INT转换成ANSI,Unicode和TCHAR字符串。

 

字符串和DOUBLE的相互转换

通过atof,_wtof,_ttof可以分别把ANSI,Unicode和TCHAR字符串转换成DOUBLE

通过_fcvt 可以把DOUBLE数值转换为ANSI字符串。

ANSI 和 UNICODE 的函数对应表

ANSI        UNICODE     通用

(char.h)    (wchar.h)        (tchar.h)

char         wchar_t          TCHAR
char *      wchar_t *        PTCHAR (PTSTR,LPWSTR,PWSTR,WCHAR)

printf       wprintf          _tprintf
scanf       wscanf          _tscanf

atoi         _wtoi            _ttoi
atol         _wtol            _ttol
itoa         _itow            _itot
ltoa         _ltow            _ltot

atof         _wtof            _tstof

strlen       wcslen          _tcslen
strcat       wcscat          _tcscat
strcpy      wcscpy         _tcscpy
strcmp     wcscmp        _tcscmp

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值