C++ 字符串操作经验集(转)

    技术2022-05-11  76

    C++ 字符串操作 经验   1.     字符类型和字符串 l 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。   l 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;   l PTSTR , LPTSTR , PCTSTR , LPCTSTR 在ANSI编译方式下, PTSTR和 LPTSTR等价于LPSTR,在Unicode下等价于LPWSTR。 在ANSI编译方式下, PCTSTR和 LPCTSTR等价于LPCSTR,在Unicode下等价于LPCWSTR。   l CStringA , CStringW , CString ,XCHAR,YCHAR,PXSTR,PYSTR,PCXSTR,PCYSTR CstringA是由CHAR组成的字符串 CStringW是由WCHAR组成的字符串 CString是由TCHAR组成的字符串 XCHAR表示和字符串组成字符相同的字符, YCHAR表示和字符串组成字符不同的字符 PXSTR表示和字符串组成字符相同的字符串, PYSTR表示和字符串组成字符不同的字符串 PCXSTR表示和字符串组成字符相同的CONST字符串, PCYSTR表示和字符串组成字符不同的CONST字符串   2. 字符串类型转换 l 用构造方法进行CStringT类之间的转换 直接调用CString,CstringA等的构造方法,把不同的字符串类作为参数,在构造中实现转换。 CString str1; CStringA strA1(str1);         //强制转换成ANSI字符串 ……对strA1进行**操作…… CString str2(strA1);        //变换回去   l 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。   l 字符(串)之间的转换 使用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. 字符串与其他类型之间的转换 l 字符串和 INT 的相互转换 通过atoi,_wtoi,_ttoi可以分别把ANSI,Unicode和TCHAR字符串转换成INT。 通过_itoa,_itow,_itot可以分别把INT转换成ANSI,Unicode和TCHAR字符串。   l 字符串和 LONG 的相互转换 通过atol,_wtol,_ttol可以分别把ANSI,Unicode和TCHAR字符串转换成LONG 通过_ltoa,_ltow,_ltot可以分别把INT转换成ANSI,Unicode和TCHAR字符串。   l 字符串和 DOUBLE 的相互转换 通过atof,_wtof,_ttof可以分别把ANSI,Unicode和TCHAR字符串转换成DOUBLE 通过_fcvt 可以把DOUBLE数值转换为ANSI字符串。 文章来源: http://blog.csdn.net/elthe/   

    最新回复(0)