c++Csring 截取字符串

来源:互联网 发布:生命密码金字塔图算法 编辑:程序博客网 时间:2024/06/11 17:46

这里写图片描述

关于TCHAR, char, wchar_t三种字符类型的区别,会在随后的文章中详细解释!下面是一、CString类的几种基本操作:
1、长度:GetLength();
CString str(_T(“abc”));
int len = str.GetLength(); //len == 3

2、是否为空(即不含字符):IsEmpty();
3、清空字符串:Empty();
CString str(_T(“abc”));
BOOL mEmpty = str.IsEmpty(); //mEmpty == FALSE
str.Empty();
mEmpty = str.IsEmpty(); //mEmpty == TRUE

4、转换大小写:MakeUpper(),MakeLower();
5、转换顺序:MakeReverse();

二、字符串的查找
1、Find:从制定位置开始查找指定字符串,返回其位置(找不到返回-1)
CString str(_T(“abcdefg”));
int idx = str.Find(_T(“cde”), 0); //idx 的值为2;

2、ReverseFind:从字符串末尾开始查找指定的字符,返回其位置,找不到返回 -1,虽然是从后向前查找,但是位置为从开始算起;
CString str(_T(“abcdefg”));
int idx = str.ReverseFind(‘e’); //idx 的值为4;

3、FindOneOf:查找参数中给定字符串中的任意字符,返回第一次出现的位置
CString str(_T(“abcabcd”));
int idx = str.FindOneOf(_T(“cbd”)); //idx 的值为1;

三、字符串的提取
Left,Mid,Right:分别实现从CString对象的左、中、右进行字符串的提取操作
CString str(_T(“abcd”));
CString strResult = str.Left(2); //strResult == ab
strResult = str.Mid(1); //strResult == bcd
strResult = str.Mid(0, 2); //strResult == ab
strResult = str.Right(2); //strResult == cd

四、其他类型与CString类型的转换,CString str;
1、格式化字符串Format:实现从int、long等数值类型、TCHAR、TCHAR*等类型向CString类型转换(注:TCHAR、TCHAR*等类型向CString类型转换,可以直接赋值)
– CString -> int:_ttoi()
– CString -> TCHAR* :
1)TCHAR* T = str.GetBuffer(); str.ReleaseBuffer();
2)TCHAR* T = (LPTSTR)(LPCTSTR)str;

五、CString对象的Ansi与Unicode转换
1、当前工程环境Unicode(窄字节(Ansi)向宽字节(Unicode)转换)
CString str;
str = “abc”;
char* p = “defg”;
str = p;

2、当前工程环境非Unicode(宽字节向窄字节转换)
CString str;
str = L”abc”;
wchar_t* p = L”defg”;
str = p;

六、CString对象包含字符串所占用的字节数
CString str;
int n = str.GetLength() * sizeof(TCHAR);
**错误的求法:sizeof(CString)、sizeof(str),这是求指针长度,总是为4
………………………………………………………………………………………………………………

我的使用:
目的:提取出邮件地址
From: “wushuang@bm.com” wushuang@bm.com
int idx=contents1.ReverseFind(‘<’);
contents1=contents1.Right(contents1.GetLength()-idx);
输出结果:wushuang@bm.com

0 0
原创粉丝点击