文章目录
前言
宽窄字节4:CString的方便之处及优缺点。
一、CString类的方便之处
CString类归属于ATL,在MFC当中也经常被重点使用。
C语言中经常使用字符串数组和指针进行字符串的操作,但是比较麻烦,例如需要考虑空间是否够用,是否存在溢出等问题。
同时C++STL中的string虽然方便很多,但是想对CString来说还是比较不成熟。
二、使用方式
1.CString类型的一些内置成员函数。
int main()
{
CString str(_T("123456"));
str += _T("abc ");
str.Trim(); // 删除字符串结尾的不显示字符
str.MakeUpper(); // 转换为大写
str.MakeLower(); //转换为小写
CString str_r = str.Right(2); // 返回右侧的两个字符
str.MakeReverse(); // 反转字符串
str.MakeReverse();
CString str_in = str.SpanIncluding(_T("1a35")); // 依次找str的字符中有没有和参数一样的字符,返回一样的字符,直到某个字符找不到为止
CString str_ex = str.SpanExcluding(_T("1a35")); // 与SpanIncluding相反,找不包含的
CString strT;
strT.Format(_T("hello %s%d"), _T("你好"), 123); // 格式化字符串
strT.Replace('l', '#'); // 替换字符(串)
strT.Replace(_T("he"), _T("666"));
str.Compare(_T("333")); // 区分大小写的比较
return 0;
}
2.CString对于TCHAR的封装
CString内部会根据当前工程的编码方式,自动决定是char* 还是wchar_t* 。实际上CString是一个模板类,有如下三种
typedef CStringT< wchar_t, StrTraitATL< wchar_t > > CAtlStringW;
typedef CStringT< char, StrTraitATL< char > > CAtlStringA;
typedef CStringT< TCHAR, StrTraitATL< TCHAR > > CAtlString;
这里的CAtlString即为CString,微软进行了重命名的定义
CAtlStringW内部使用的是wchar_t* ,CAtlStringA内部使用的是char* ,CAtlString内部使用的是TCHAR* ,所以CString本身会根据当前工程的编码方式,自动决定是char* 还是wchar_t* ,比较方便。
3.CString类对于宽窄字节的转换
当前工程是Unicode宽字节编码的情况下,CString支持从char*类型的窄字节字符串来构造和赋值。因此是可以很方便从窄字节转换为宽字节,反之同样。
char* ppp = (char*)"你还123";
CString w_ppp = ppp;
wchar_t* w_pp = (wchar_t*)L"你好123";
CString a_ppp = w_pp;
4.CString类的优缺点
优点:
1.使用方便、包含了很多实现好的操作,如trim, reverse, format等
2.无缝兼容MFC
3.自适应当前工程编码,匹配宽窄字节
4.能实现宽窄字节的自动转换工作
缺点:非C++标准,无法跨平台,在除了VC以外的编译器无法使用,更无法在Linux等其他平台上使用。
总结
宽窄字节4:CString的方便之处及优缺点。
标签:字节,CString,优缺点,char,宽窄,str,wchar From: https://blog.csdn.net/qq_59940419/article/details/145140428