CString常用函数用法

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

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

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

[csharp]  view plain  copy
  1. //A.构造函数,CStringT提供了19个构造函数,其中一个旨在.NET平台托管C++工程中才被编译,我只写几个我觉得常用的  
  2. //1.默认构造函数,生成一个""字符串  
  3. CString cstr1;  
  4. //2.拷贝构造函数  
  5. CString cstr2(cstr1);  
  6. //3.从LPCSTR构造  
  7. LPCSTR  myCStr  = "Hello CString";  
  8. CString cstr3(myCStr);  
  9. //4.从LPCWSTR构造  
  10. LPCWSTR myCWStr = L"Hello CString";  
  11. CString cstr4(myCWStr);  
  12. //5.指定n个c字符构造  
  13. char    mycharacter = 'x';  
  14. CString cstr5(mycharacter,10);  //构造10个x的字符串  
  15. //6.从指定n个w字符构造  
  16. wchar_t mywcharacter    = '测';  
  17. CString cstr6(mywcharacter,5);  
  18. //7.从unsigned char(也就是MBCS)构造  
  19. unsigned char*  pMbcs = NULL;  
  20. CString cstr7(pMbcs);  
  21. //8.从VARIANT构造  
  22. BSTR    bstr    = SysAllocString(L"Hello World");  
  23. VARIANT var;  
  24. var.bstrVal = bstr; //var.bstrVal   = L"Hello World"cstr8的字符信息不对。  
  25. var.vt  = VT_BSTR;  
  26. SysFreeString(bstr);  
  27. CString cstr8(var);  
  28.   
  29. //B.CString提供了8个赋值操作符,我只写我觉得几个常用的  
  30. //1.CString到CString  
  31. cstr8   = cstr7;  
  32. //2.c char到CString  
  33. cstr8   = mycharacter;  
  34. //3.w char到CString  
  35. cstr8   = mywcharacter;  
  36. //4.uc char到CString  
  37. cstr8   = pMbcs;  
  38. //5.VARIANT到CString  
  39. cstr8   = var;  
  40.   
  41. //C.字符串连接,我只写几个我觉得常用的  
  42. //1.operator+ char  
  43. cstr8   += mycharacter;  
  44. //2.operator+ unsigned char  
  45. cstr8   += unsigned char('c');  
  46. //3.operator+ wchar_t  
  47. cstr8   += mywcharacter;  
  48. //4.operator+ VARIANT  
  49. cstr8   += var;  
  50. //CString + CString  
  51. cstr8   += cstr7;  
  52.   
  53. //D.大小写转换  
  54. cstr8.MakeUpper();  //转大写  
  55. cstr8.MakeLower();  //转小写  
  56.   
  57. //E.CString定义了比较完整的比较操作,这有==、!=、<等等  
  58.   
  59. //F.操作  
  60. //1.查找  
  61. cstr8.Find('o');    //查找第一个'o'  
  62. cstr8.Find('o',5);  //从左起第5个查  
  63. cstr8.FindOneOf(L"aeiou");  //查找集合中的任一个  
  64. cstr8.ReverseFind('o'); //反向查找  
  65. //2.裁剪  
  66. cstr8.Trim();       //裁剪开始+末尾空格  
  67. cstr8.Trim('o');    //裁剪左右'o'  
  68. cstr8.Trim(L"aeiou");   //裁剪左右任何在集合中的字符  
  69. cstr8.TrimLeft();  
  70. cstr8.TrimLeft('o');  
  71. cstr8.TrimLeft(L"aeiou");  
  72. cstr8.TrimRight();  
  73. cstr8.TrimRight('o');  
  74. cstr8.TrimRight(L"aeiou");  
  75. //3.取回目标字符串中被指定字符串包含的子串  
  76. cstr8   = L"hello worldhello world";  
  77. cstr7   = cstr8.SpanIncluding(L"mhellohaha");  
  78. //4.取回原串,直到目标串中的任意一个字符出现  
  79. cstr7   = cstr8.SpanExcluding(L"aiuw");  
  80. //5.Inert  
  81. cstr8.Insert(5,L"haha");    //指定位置插入字符串  
  82. cstr8.Insert(6,'h');        //指定位置插入字符  
  83. //6.Delete、Remove  
  84. cstr8.Delete(5,2);          //从指定位置(5)删除若干个(2)字符  
  85. cstr8.Remove('o');          //移除所有'o'  
  86. //7.Replace  
  87. cstr8.Replace('o','a');     //把'o'替换为'a'  
  88. cstr8.Replace(L"haha",L"toto"); //字符串替换  
  89. //9.提取子串  
  90. CString cstrRet;  
  91. cstrRet = cstr8.Left(5);    //提取最左n个字符  
  92. cstrRet = cstr8.Mid(10);    //从第n个字符到结尾  
  93. cstrRet = cstr8.Mid(10,15); //提取指定区间字符串  
  94. cstrRet = cstr8.Right(11);  //最右边n个字符  
  95. //10.反转  
  96. cstr8.MakeReverse();  
  97. //11.以特定分隔符提取  
  98. int refn    = 0;  
  99. cstrRet = cstr8.Tokenize(L"aeiou",refn);    //可以使用refn递归找到所有被分割的子串  
  100. //12.载入dll或exe中的字符串资源  
  101. cstr8.LoadString(100);      //100为资源id,还有其他重载,略去  
  102. //13.获取环境变量  
  103. cstr8.GetEnvironmentVariable(L"windir");  
  104. //14.格式化  
  105. cstr8.Format(L"haha,now is%d with %s",100,L"old");  //format string 也可以是资源id  
  106.   
  107. //G.与BSTR的交互  
  108. BSTR    bstr1   = cstr8.AllocSysString();  
  109. BSTR    bstr2   = cstr8.SetSysString(&bstr1);  
  110. SysFreeString(bstr2);  

你可能感兴趣的:(C++语言,Windows编程)