MFC CString 用法小结.docx

上传人:牧羊曲112 文档编号:3161441 上传时间:2023-03-11 格式:DOCX 页数:17 大小:43.54KB
返回 下载 相关 举报
MFC CString 用法小结.docx_第1页
第1页 / 共17页
MFC CString 用法小结.docx_第2页
第2页 / 共17页
MFC CString 用法小结.docx_第3页
第3页 / 共17页
MFC CString 用法小结.docx_第4页
第4页 / 共17页
MFC CString 用法小结.docx_第5页
第5页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《MFC CString 用法小结.docx》由会员分享,可在线阅读,更多相关《MFC CString 用法小结.docx(17页珍藏版)》请在三一办公上搜索。

1、MFC CString 用法小结 MFC CString 用法小结 1. 初始化方法: (1) 直接复制,如Cstring=”mingrisoft”; (2) 通过构造函数初始化,如 CString str( ,100)/与分配100个字节,填充空格 char* p=”feiqiang”; Cstring(p);delete p. (3) 加载工程中的字符串资源,如CString str;str.LoadString(IDS_STR); (4) 使用CString类的成员函数Format初始化,如CString str; int i=0; str.Format(“value:%d”,i); 2

2、. 将CString转化为char*,如 CString str=”feqiang”; char *p; p=str.GetBuffer; delete p; 将char*转化为CString,如: char* p=”feiqiang”; plen(p)=0; Cstring str(p); char* 和char数组的转化: char buf5 =a,b,c; char *p; p=new char5; p=buf; 将字符串转化为数字: CString str=”12”; int i=atoi(str); long j=atoll(str); float f=atof(str); 将数字转

3、化为字符串: CString str; int i=12; str.Format(“%d”,i); long j=12; str,Format(“%ld”,j); 同理其他类型。 3. 字符串的相关操作即方法的使用: (1) 提取字符串中的中文,如 CString strtext,temp,strres; GetLlgItem(IDC_TEXT)-GetWindowText(strtext);/通过ID获取编辑框中的文本 for(int =0;iSetWindowText(strtes);/设置文本框中的文本 (2) 英文字符串首字母大写,如 将以空格符分隔的英文单词的第一个字母大写(小写)

4、str.GetAt(i);/提取字符串索引为i个字母 str.MakeLower;/转化为小写 tmp.MakeUpper;/转化为大写 (2) 按制定符号分割字符: int pos=str.Find(strchar);/查找字符,如果没找到,则返回0,找到则返回字符的位置,参数可以是字符也可以是字符串 while(pos0) str1=str.Left(pos);/取左,参数为字符串的个数 str=str.Right(str.GetLength-pos-1);/取右,参数同上 tmp.Format(“%srn”,str1);/字符串中rn代表回车化行符 strres+=tmp; pos=st

5、r.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(

6、strchar,strnew);/用新串替换旧串 (5) 根据CPoint查找位置: CPoint pt;/获取字符串时获取鼠标所在字符串的位置 int pos=m_text.CharFromPos(pt);/根据pt获取字符串中的位置,即其左侧字符的位置 if(str.IsEmpty)/判断字符串是否为空 m_num.AddString(strres);/文本框追加字符串 将字符转化为大写:ch=ch-32; (6) 字符串忽略大小写的比较: CString str=”feiqiang”; int com=str.CompareNoCase(“mingri”);/如果相等返回0,否则返回-1

7、; (7) 连接换行符:CString str=”feiqiang t”; (8) 字符反转:str.MakeReverse; (9) 取出首位空格:str.TrimLeft; str.TrimRight; 取出字符串中的所有空格,str.Replace(“ ”,”); (10) 在ListBox中查找字符串 int index=:SendMessage(m_stringlist.GetSafeHwnd,LB_FINDSTRINGEXACT,-1, (LPARAM)(LPCTSTR)strtext);/通过SendMessage函数向列表控件发送LB_FINDSTRINGEXACT消息来查找指

8、定字符串是否在列表空间中,如果存在则返回索引位置。 (11) 字符串数组: CString str5 array; CString str5=“feiqiang”,”mingri”,”mr”; for(int i=0;i5;i+) array.Add(stri);/添加元素 for(int j=0;j要删除字符串的最大长度(GetCount - nIndex)时会出错,当nCount过大,没有足够的字符删除时,此函数不执行。 示例: CString str1,str2,str3; char a; str1 = nihao; str2 = nIhao; int x; / int i=(str1

9、= str2); str1.Delete(2,3); 如果nCount(3) GetCount nIndex (5-2)就会执行错误 22.CString:Empty Void Empty( ); 返回值:没有返回值 清空操作; 示例: CString s( abc ); s.Empty; ASSERT( s.GetLength( ) = 0 ); 23.CString:Find int Find( TCHAR ch ) const; int Find( LPCTSTR lpszSub ) const; int Find( TCHAR ch, int nStart ) const; int F

10、ind( LPCTSTR lpszSub, int nStart ) const; 返回值: 不匹配的话返回 -1; 索引以0 开始; nStar 代表以索引值nStart 的字符开始搜索 , 即为包含以索引nStart字符后的字符串. 示例: CString s( abcdef ); ASSERT( s.Find( c ) = 2 ); ASSERT( s.Find( de ) = 3 ); Cstring str(“The stars are aligned”); Ing n = str.Find(e,5); ASSERT(n = 12) 24.CString:FindOneOf int

11、FindOneOf( LPCTSTR lpszCharSet ) const; 返回值: 不匹配的话返回 -1; 索引以0 开始 注意:返回此字符串中第一个在lpszCharSet中也包括字符并且从零开始的索引值 示例: CString s( abcdef ); ASSERT( s.FindOneOf( xd ) = 3 ); / d is first match. 25.CString:Format void Format( LPCTSTR lpszFormat, . ); void Format( UINT nFormatID, . ); 参数:lpszFormat 一个格式控制字符串 n

12、FormatID 字符串标识符 示例: CString str; Str.Format(“%d”,13); 此时Str为13 26.CString:GetAt TCHAR GetAt( int nIndex ) const; 返回值:返回标号为nIndex的字符,你可以把字符串理解为一个数组,GetAt类似于.注意nIndex的范围,如果不合适会有调试错误。 27.CString:GetBuffer LPTSTR GetBuffer( int nMinBufLength ); 返回值:一个指向对象的字符缓冲区的LPTSTR 指针。 参数:nMinBufLength 字符缓冲区的以字符数表示的最

13、小容量。这个值不包括一个结尾的空字符的空间。 说明:此成员函数返回一个指向CString 对象的内部字符缓冲区的指针。返回的LPTSTR 不是const,因此可以允许直接修改CString 的内容。如果你使用由GetBuffer 返回的指针来改变字符串的内容,你必须在使用其它的CString 成员函数之前调用ReleaseBuffer 函数。 在调用ReleaseBuffer 之后,由GetBuffer 返回的地址也许就无效了,因为其它的CString 操作可能会导致CString 缓冲区被重新分配。如果你没有改变此CString 的长度,则缓冲区不会被重新分配。当此CString 对象被销毁

14、时,其缓冲区内存将被自动释放。 注意:如果你自己知道字符串的长度,则你不应该添加结尾的空字符。但是,当你用ReleaseBuffer 来释放该缓冲区时,你必须指定最后的字符串长度。如果你添加了结尾的空字符,你应该给ReleaseBuffer 的长度参数传递-1 ,ReleaseBuffer 将对该缓冲区执行strlen 来确定它的长度。 示例: / CString:GetBuffer 例子 CString s( abcd ); #ifdef _DEBUG afxDump CString s s n; #endif LPTSTR p = s.GetBuffer( 10 ); strcpy( p,

15、 Hello ); / 直接访问CString 对象。 s.ReleaseBuffer( ); #ifdef _DEBUG afxDump CString s s n; #endif 28.CString:GetLength int GetLength( ) const; 返回值:返回字符串中的字节计数。 说明:此成员函数用来获取这个CString 对象中的字节计数。这个计数不包括结尾的空字符。 对于多字节字符集,GetLength 按每一个8 位字符计数;即,在一个多字节字符中的开始和结尾字节被算作两个字节。 示例 下面的例子说明了如何使用CString:GetLength。 / CStri

16、ng:GetLength 示例 CString s( abcdef ); ASSERT( s.GetLength = 6 ); 29.CString:Insert int Insert( int nIndex, TCHAR ch ); int Insert( int nIndex, LPCTSTR pstr ); 返回值:返回修改后的长度,nIndex是字符插入后的索引号例子 示例: CString str( “HockeyBest”); int n = str.Insert( 6, “is” ); ASSERT( n = str.GetLength( ) ); printf( “1: %sn”, ( LPCTSTR ) str ); n = str.Insert( 6, ); ASSERT( n = str.GetLength( ) ); printf ( “2: %sn”, (LPCTSTR) STR ); n = str.Insert(555, 1); ASSERT( n = str.GetLength ( ) ); printf ( “3: %sn”, ( LPCTSTR ) str ); 输出 1. Hockeyis Best 2. Hockey is Best 3. Hockey is Best!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号