CString常用操作種種 -开发者知识库

CString常用操作種種 -开发者知识库,第1张

  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);

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复