CString常用操作种种

  CString给MFC程序员带来了在那个年代不敢奢望的功能,甚至在VS2005刚发布的时候,为了应对默认UNICODE的问题,我常常使用CString避免显式的宽字符转换。

  在现在,好用的CString也是ATL的一部分了。其实ATL里的CString和MFC里的是同一个东东,如果在MFC中已经很熟悉CString了,就没有必要更多的研究了。

  下面是我自己觉得常用的几个操作,当然有些我以前没用过的觉得相见恨晚的东东,我也写进去了。

	//A.构造函数,CStringT提供了19个构造函数,其中一个旨在.NET平台托管C++工程中才被编译,我只写几个我觉得常用的
	//1.默认构造函数,生成一个""字符串
	CString	cstr1;
	//2.拷贝构造函数
	CString	cstr2(cstr1);
	//3.从LPCSTR构造
	LPCSTR	myCStr	= "Hello CString";
	CString	cstr3(myCStr);
	//4.从LPCWSTR构造
	LPCWSTR	myCWStr	= L"Hello CString";
	CString	cstr4(myCWStr);
	//5.指定n个c字符构造
	char	mycharacter	= 'x';
	CString	cstr5(mycharacter,10);	//构造10个x的字符串
	//6.从指定n个w字符构造
	wchar_t	mywcharacter	= '测';
	CString	cstr6(mywcharacter,5);
	//7.从unsigned char(也就是MBCS)构造
	unsigned char*	pMbcs = NULL;
	CString	cstr7(pMbcs);
	//8.从VARIANT构造
	BSTR	bstr	= SysAllocString(L"Hello World");
	VARIANT	var;
	var.bstrVal	= bstr;	//var.bstrVal	= L"Hello World"cstr8的字符信息不对。
	var.vt	= VT_BSTR;
	SysFreeString(bstr);
	CString	cstr8(var);

	//B.CString提供了8个赋值操作符,我只写我觉得几个常用的
	//1.CString到CString
	cstr8	= cstr7;
	//2.c char到CString
	cstr8	= mycharacter;
	//3.w char到CString
	cstr8	= mywcharacter;
	//4.uc char到CString
	cstr8	= pMbcs;
	//5.VARIANT到CString
	cstr8	= var;

	//C.字符串连接,我只写几个我觉得常用的
	//1.operator+ char
	cstr8	+= mycharacter;
	//2.operator+ unsigned char
	cstr8	+= unsigned char('c');
	//3.operator+ wchar_t
	cstr8	+= mywcharacter;
	//4.operator+ VARIANT
	cstr8	+= var;
	//CString + CString
	cstr8	+= cstr7;

	//D.大小写转换
	cstr8.MakeUpper();	//转大写
	cstr8.MakeLower();	//转小写

	//E.CString定义了比较完整的比较操作,这有==、!=、<等等

	//F.操作
	//1.查找
	cstr8.Find('o');	//查找第一个'o'
	cstr8.Find('o',5);	//从左起第5个查
	cstr8.FindOneOf(L"aeiou");	//查找集合中的任一个
	cstr8.ReverseFind('o');	//反向查找
	//2.裁剪
	cstr8.Trim();		//裁剪开始+末尾空格
	cstr8.Trim('o');	//裁剪左右'o'
	cstr8.Trim(L"aeiou");	//裁剪左右任何在集合中的字符
	cstr8.TrimLeft();
	cstr8.TrimLeft('o');
	cstr8.TrimLeft(L"aeiou");
	cstr8.TrimRight();
	cstr8.TrimRight('o');
	cstr8.TrimRight(L"aeiou");
	//3.取回目标字符串中被指定字符串包含的子串
	cstr8	= L"hello worldhello world";
	cstr7	= cstr8.SpanIncluding(L"mhellohaha");
	//4.取回原串,直到目标串中的任意一个字符出现
	cstr7	= cstr8.SpanExcluding(L"aiuw");
	//5.Inert
	cstr8.Insert(5,L"haha");	//指定位置插入字符串
	cstr8.Insert(6,'h');		//指定位置插入字符
	//6.Delete、Remove
	cstr8.Delete(5,2);			//从指定位置(5)删除若干个(2)字符
	cstr8.Remove('o');			//移除所有'o'
	//7.Replace
	cstr8.Replace('o','a');		//把'o'替换为'a'
	cstr8.Replace(L"haha",L"toto");	//字符串替换
	//9.提取子串
	CString	cstrRet;
	cstrRet	= cstr8.Left(5);	//提取最左n个字符
	cstrRet	= cstr8.Mid(10);	//从第n个字符到结尾
	cstrRet	= cstr8.Mid(10,15);	//提取指定区间字符串
	cstrRet	= cstr8.Right(11);	//最右边n个字符
	//10.反转
	cstr8.MakeReverse();
	//11.以特定分隔符提取
	int	refn	= 0;
	cstrRet	= cstr8.Tokenize(L"aeiou",refn);	//可以使用refn递归找到所有被分割的子串
	//12.载入dll或exe中的字符串资源
	cstr8.LoadString(100);		//100为资源id,还有其他重载,略去
	//13.获取环境变量
	cstr8.GetEnvironmentVariable(L"windir");
	//14.格式化
	cstr8.Format(L"haha,now is%d with %s",100,L"old");	//format string 也可以是资源id
	
	//G.与BSTR的交互
	BSTR	bstr1	= cstr8.AllocSysString();
	BSTR	bstr2	= cstr8.SetSysString(&bstr1);
	SysFreeString(bstr2);
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值