MFC CString 用法小结.docx
- 文档编号:3518862
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:16
- 大小:22.09KB
MFC CString 用法小结.docx
《MFC CString 用法小结.docx》由会员分享,可在线阅读,更多相关《MFC CString 用法小结.docx(16页珍藏版)》请在冰豆网上搜索。
MFCCString用法小结
MFC CString 用法小结
1. 初始化方法:
(1) 直接复制,如Cstring=”mingrisoft”;
(2) 通过构造函数初始化,如 CStringstr(‘’,100)//与分配100个字节,填充空格
char*p=”feiqiang”;Cstring(p);deletep.
(3) 加载工程中的字符串资源,如CStringstr;str.LoadString(IDS_STR);
(4) 使用CString类的成员函数Format初始化,如CStringstr;inti=0;str.Format(“value:
%d”,i);
2. 将CString转化为char*,如
CStringstr=”feqiang”;
char*p;
p=str.GetBuffer();
deletep;
将char*转化为CString,如:
char*p=”feiqiang”;
p[len(p)]=’\0’;
Cstringstr(p);
char*和char数组的转化:
charbuf[5]={‘a’,’b’,’c’};
char*p;
p=newchar[5];
p=buf;
将字符串转化为数字:
CStringstr=”12”;
inti=atoi(str);
longj=atoll(str);
floatf=atof(str);
将数字转化为字符串:
CStringstr;
inti=12;
str.Format(“%d”,i);
longj=12;
str,Format(“%ld”,j);
同理其他类型。
3. 字符串的相关操作即方法的使用:
(1) 提取字符串中的中文,如
CStringstrtext,temp,strres;
GetLlgItem(IDC_TEXT)->GetWindowText(strtext);//通过ID获取编辑框中的文本
for(int=\0;i charch=strtext.GetAt(i); if(IsDBCSLeadByte(ch)){//判断字符是否是双字节编码的前一个字节 tmp=strtext.Mid(i,2);//截取索引index1到index2的字符[ ) i++; stress+=tmp; } GetLlgItem(IDC_RESULT)->SetWindowText(strtes);//设置文本框中的文本 } (2) 英文字符串首字母大写,如将以空格符分隔的英文单词的第一个字母大写(小写) str.GetAt(i);//提取字符串索引为i个字母 str.MakeLower();//转化为小写 tmp.MakeUpper();//转化为大写 (2) 按制定符号分割字符: intpos=str.Find(strchar);//查找字符,如果没找到,则返回0,找到则返回字符的位置,参数可以是字符也可以是字符串 while(pos>0){ str1=str.Left(pos);//取左,参数为字符串的个数 str=str.Right(str.GetLength-pos-1);//取右,参数同上 tmp.Format(“%s\r\n”,str1);//字符串中\r\n代表回车化行符 strres+=tmp; pos=str.Find(strchar); } (3) 删除指定的中文: m_text.GetWindowText(strtxt); m_text.GetSel(istart,iend);//得到文本框中选中的文本,并且得到文本的头索引和尾索引 if(istart==iend){ return; } str1=strtxt.Left(istart); if(iend>=strtxt.GetLength()){ str2=””; }else{ str2=strtxt.Right(strtxt.GetLength()-iend); } strres+=str1; strres+=str2; (4) 替换字符串: strtxt.Replace(strchar,strnew);//用新串替换旧串 (5) 根据CPoint查找位置: CPointpt;//获取字符串时获取鼠标所在字符串的位置 intpos=m_text.CharFromPos(pt);//根据pt获取字符串中的位置,即其左侧字符的位置 if(str.IsEmpty()){//判断字符串是否为空 m_num.AddString(strres);//文本框追加字符串 } 将字符转化为大写: ch=ch-32; (6) 字符串忽略大小写的比较: CStringstr=”feiqiang”; intcom=str.CompareNoCase(“mingri”);//如果相等返回0,否则返回-1; (7) 连接换行符: CStringstr=”feiqiang\ t”; (8) 字符反转: str.MakeReverse(); (9) 取出首位空格: str.TrimLeft();str.TrimRight(); 取出字符串中的所有空格,str.Replace(“”,””); (10) 在ListBox中查找字符串 intindex=: : SendMessage(m_stringlist.GetSafeHwnd(),LB_FINDSTRINGEXACT,-1, (LPARAM)(LPCTSTR)strtext));//通过SendMessage函数向列表控件发送LB_FINDSTRINGEXACT消息来查找指定字符串是否在列表空间中,如果存在则返回索引位置。 (11) 字符串数组: CStringstr[5]array; CStringstr[5]={“feiqiang”,”mingri”,”mr”}; for(inti=0;i<5;i++){ array.Add(str[i]);//添加元素 } for(intj=0;j if(array.Get(j)==”mr”){ MessageBox(“存在”); } } (12) 设置编码方式: Project/SettingsàPreprocessor,如果要使用DBCS,则添加_MBCS(多个字节编码),如果要使用Unicode,则添加_Unicode,不添加则使用ASCII. 二 字符串指针类型 (1) LPCSTR: 32位静态字符串指针,可以直接赋值使用,如LPCSTRstr=”mingrisofg”; (2) LPSTR: 32位字符串指针,如LPSTRstr;str=newchar[256]; (3) LPCTSTR: 32位UNICODE型静态字符串指针,如LPCTSTRstr=_T(“mingrisoft”); (4) LPTSTR: 32位UNICODE型字符串指针,如LPTSTRstr=newTCHAR[256]; 三 BSTR(进行COM编程时使用的字符串类型)与CString之间的转化: 1. 对BSTR变量赋值时: BSTRbstr=NULL; bstr=SysAllocString(L”feiqang”);//从LPCWSTR构造 SysFreeString(bstr);//释放 将BSTR强制转化为CString,如: CStringstr=(CString)bstr;或CStringstr;BSTRbstr=str.AllocSysString(); 2. _bstr_(对BSTR的包装类),包含的头文件为: ”COMDEF.H” 用法: 直接赋值: _bstr_ttbstr=”feqiang”; 给CString对象赋值: CStringstr=(LPCSTR)tbstr;//LPCSTRstr=tbstr; 将_bsr_转化为BSTR,使用copy函数: BSTRbstr=tbstr.copy();SysFreeString(bstr); BSTR之间赋值给_bstr_对象,如BSTRbstr=SysAllocString(L”mingri”);_bstr_ttbstr=bstr; 四格式化类型 如: 获取并且格式化系统时间 CTimet=CTime: : GetCurrentTime(); CSTringstrtime=t.Format(“%H: %M: %S”); MessageBox(strtime; 1.CString: : IsEmpty BOOLIsEmpty()const; 返回值: 如果CString对象的长度为0,则返回非零值;否则返回0。 说明: 此成员函数用来测试一个CString对象是否是空的。 示例: 下面的例子说明了如何使用CString: : IsEmpty。 //CString: : IsEmpty示例 CStrings; ASSERT(s.IsEmpty()); 请参阅CString: : GetLength 2.CString: : Left CStringLeft(intnCount)const; throw(CMemoryException); 返回值: 返回的字符串是前nCount个字符。 示例: CStrings(_T("abcdef")); ASSERT(s.Left (2)==_T("ab")); 3.CString: : LoadString BOOLLoadString(UINTnID); throw(CMemoryException); 返回值: 如果加载资源成功则返回非零值;否则返回0。 nID 一个Windows字符串资源ID。 说明: 此成员函数用来读取一个由nID标识的Windows字符串资源,并放入一个已有CString对象中。 示例: 下面的例子说明了如何使用CString: : LoadString。 //CString: : LoadString示例 #defineIDS_FILENOTFOUND1 CStrings; if(! s.LoadString(IDS_FILENOTFOUND)) 4.CString: : MakeLower voidMakeLower(); //改变字符的小写 5.CString: : MakeReverse voidMakeReverse(); //字符倒置 6.CString: : MakeUpper voidMakeUpper(); //改变字符的大写 7.CString: : Mid CStringMid(intnFirst)const; CStringMid(intnFirst,intnCount)const; nCount代表要提取的字符数,nFirst代表要提取的开始索引位置 示例: CStrings(_T("abcdef")); ASSERT(s.Mid(2,3)==_T("cde")); 8.CString: : ReleaseBuffer voidReleaseBuffer(intnNewLength=-1); 参数: nNewLength 此字符串的以字符数表示的新长度,不计算结尾的空字符。 如果这个字 符串是以空字符结尾的,则参数的缺省值-1将把CString的大小设置为 字符串的当前长度。 说明: 使用ReleaseBuffer来结束对由GetBuffer分配的缓冲区的使用。 如果你知道缓 冲区中的字符串是以空字符结尾的,则可以省略nNewLength参数。 如果字符 串不是以空字符结尾的,则可以使用nNewLength指定字符串的长度。 在调用 ReleaseBuffer或其它CString操作之后,由GetBuffer返回的地址是无效的。 示例: 下面的例子说明了如何使用CString: : ReleaseBuffer。 //CString: : ReleaseBuffer示例 CStrings; s="abc"; LPTSTRp=s.GetBuffer(1024); strcpy(p,"abc");//直接使用该缓冲区 ASSERT(s.GetLength()==3);//字符串长度=3 s.ReleaseBuffer();//释放多余的内存,现在p无效。 ASSERT(s.GetLength()==3);//长度仍然是3 9.CString: : Remove intCString: : Remove(TCHARch); 返回值: 返回从字符串中移走的字符数。 如果字符串没有改变则返回零。 参数: ch 要从一个字符串中移走的字符。 说明: 此成员函数用来将ch实例从字符串中移走。 与这个字符的比较是区分大小写 的。 示例: //从一个句子中移走小写字母'c': CStringstr(“Thisisatest.”); intn=str.Remove('t'); ASSERT(n==2); ASSERT(str==“Thisisaes.”); 10.CString: : Replace intReplace(TCHARchOld,TCHARchNew); intReplace(LPCTSTRlpszOld,LPCTSTRlpszNew); 返回值: 返回被替换的字符数。 如果这个字符串没有改变则返回零。 参数: chOld 要被chNew替换的字符。 chNew 要用来替换chOld的字符。 lpszOld 一个指向字符串的指针,该字符串包含了要被lpszNew替换的字符。 LpszNew 一个指向字符串的指针,该字符串包含了要用来替换lpszOld的字符。 说明: 此成员函数用一个字符替换另一个字符。 函数的第一个原形在字符串中用chNew 现场替换chOld。 函数的第二个原形用lpszNew指定的字符串替换lpszOld指定 的子串。 在替换之后,该字符串有可能增长或缩短;那是因为lpszNew和lpszOld的长度 不需要是相等的。 两种版本形式都进行区分大小写的匹配。 示例: //第一个例子,old和new具有相同的长度。 CStringstrZap(“C--”); intn=strZap.Replace('-','+'); ASSERT(n==2); ASSERT(strZap==“C++”); //第二个例子,old和new具有不同的长度。 CStringstrBang(“Everybodylikesicehockey”); n=strBang.Replace(“hockey”,“golf”); ASSERT(n==1); n=strBang.Replace(“likes”,“plays”); ASSERT(n==1); n=strBang.Replace(“ice”,NULL); ASSERT(n==1); ASSERT(strBang==“Everybodyplaysgolg”); //注意,现在在你的句子中有了一个额外的空格。 //要移走这个额外的空格,可以将它包括在要被替换的字符串中,例如,“ice”。 11.CString: : ReverseFind intReverseFind(TCHARch)const; 返回值: 返回此CString对象中与要求的字符匹配的最后一个字符的索引;如果没有找 到需要的字符则返回-1。 参数: ch 要搜索的字符。 说明: 此成员函数在此CString对象中搜索与一个子串匹配的最后一个字符。 此函数 类似于运行时函数strrchr。 示例: //CString: : ReverseFind示例 CStrings("abcabc"); ASSERT(s.ReverseFind('b')==4); 12.CString: : Right CStringRight(intnCount)const; throw(CMemoryException); 返回值: 返回的字符串是最后nCount个字符。 CStrings(_T("abcdef")); ASSERT(s.Right (2)==_T("ef")); 13.CString: : SetAt voidSetAt(intnIndex,TCHARch); 说明: 可以把字符串理解为一个数组,SetAt类似于[].注意nIndex的范围,如果不合适会有调试错误。 Ch更替字符,把nIndex位置上的字符变成ch 示例: CStrings("abc"); s.MakeReverse(); ASSERT(s=="cba"); 14.CString: : TrimLeft voidTrimLeft(); voidCString: : TrimLeft(TCHARchTarget); 说明: 如果没有参数,从左删除字符(\n\t空格等),至到遇到一个非此类字符.当然你也可以指定删除那些字符.如果指定的参数是字符串,那么遇上其中的一个字符就删除. \n 换行符 \t TAB字符 示例1: CStringstr="\n\ta"; str.TrimLeft(); str为“a”; 示例2: CStringstr="abbcadbabcadb"; str.TrimLeft("ab"); 结果"cadbabcadb" str.TrimLeft("ac"); 结果"bcadbabcadb" 15.CString: : TrimRight voidTrimRight(); voidCString: : TrimRight(TCHARchTarget); voidCString: : TrimRight(LPCTSTRlpszTargets); 说明: 用法类似于上面。 16.CString: : Compare intCompare(LPCTSTRlpsz)const; 返回值: 字符串一样返回0,小于lpsz 返回-1,大于lpsz 返回1,区分大小字符 示例: CStrings1("abc"); CStrings2("abd"); ASSERT(s1.Compare(s2)==-1); ASSERT(s1.Compare("abe")==-1 17.CString: : CompareNoCase intCompareNoCase(LPCTSTRlpsz)const; 返回值: 字符串一样返回0,小于lpsz 返回-1,大于lpsz 返回1,不区分大小字符 18.CString: : Collate intCollate(LPCTSTRlpsz)const; 同CString: : Compare 19.CString: : CollateNoCase intCollateNocase(LPCTSTRlpsz)const; 同CString: : CompareNoCase 20.CString: : CString //构造函数 CString(); CString(constCString&stringSrc); CString(TCHARch,intnRepeat=1); CString(LPCTSTRlpch,intnLength); CString(constunsignedchar*psz); CString(LPCWSTRlpsz); CString(LPCSTRlpsz); 示例: CStrings1; CStrings2("cat"); CStrings3=s2; CStrings4(s2+""+s3); CStrings5('x');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC CString 用法小结 用法 小结
![提示](https://static.bdocx.com/images/bang_tan.gif)