MFC CString 用法小结Word格式.docx
- 文档编号:16424239
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:16
- 大小:22.09KB
MFC CString 用法小结Word格式.docx
《MFC CString 用法小结Word格式.docx》由会员分享,可在线阅读,更多相关《MFC CString 用法小结Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
longj=12;
str,Format(“%ld”,j);
同理其他类型。
3.
字符串的相关操作即方法的使用:
(1)
提取字符串中的中文,如
CStringstrtext,temp,strres;
GetLlgItem(IDC_TEXT)->
GetWindowText(strtext);
//通过ID获取编辑框中的文本
for(int=\0;
i<
strtext.GetLength();
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();
//转化为大写
按制定符号分割字符:
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);
删除指定的中文:
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;
5;
array.Add(str[i]);
//添加元素
for(intj=0;
j<
array.Size(),j++){//字符数组大小
if(array.Get(j)==”mr”){
MessageBox(“存在”);
(12)
设置编码方式:
Project/Settingsà
Preprocessor,如果要使用DBCS,则添加_MBCS(多个字节编码),如果要使用Unicode,则添加_Unicode,不添加则使用ASCII.
二
字符串指针类型
LPCSTR:
32位静态字符串指针,可以直接赋值使用,如LPCSTRstr=”mingrisofg”;
LPSTR:
32位字符串指针,如LPSTRstr;
str=newchar[256];
LPCTSTR:
32位UNICODE型静态字符串指针,如LPCTSTRstr=_T(“mingrisoft”);
LPTSTR:
32位UNICODE型字符串指针,如LPTSTRstr=newTCHAR[256];
三
BSTR(进行COM编程时使用的字符串类型)与CString之间的转化:
对BSTR变量赋值时:
BSTRbstr=NULL;
bstr=SysAllocString(L”feiqang”);
//从LPCWSTR构造
SysFreeString(bstr);
//释放
将BSTR强制转化为CString,如:
CStringstr=(CString)bstr;
或CStringstr;
BSTRbstr=str.AllocSysString();
_bstr_(对BSTR的包装类),包含的头文件为:
”COMDEF.H”
用法:
直接赋值:
_bstr_ttbstr=”feqiang”;
给CString对象赋值:
CStringstr=(LPCSTR)tbstr;
//LPCSTRstr=tbstr;
将_bsr_转化为BSTR,使用copy函数:
BSTRbstr=tbstr.copy();
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);
如果加载资源成功则返回非零值;
nID
一个Windows字符串资源ID。
此成员函数用来读取一个由nID标识的Windows字符串资源,并放入一个已有CString对象中。
LoadString。
LoadString示例
#defineIDS_FILENOTFOUND1
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代表要提取的开始索引位置
ASSERT(s.Mid(2,3)==_T("
cde"
8.CString:
ReleaseBuffer
voidReleaseBuffer(intnNewLength=-1);
参数:
nNewLength
此字符串的以字符数表示的新长度,不计算结尾的空字符。
如果这个字
符串是以空字符结尾的,则参数的缺省值-1将把CString的大小设置为
字符串的当前长度。
使用ReleaseBuffer来结束对由GetBuffer分配的缓冲区的使用。
如果你知道缓
冲区中的字符串是以空字符结尾的,则可以省略nNewLength参数。
如果字符
串不是以空字符结尾的,则可以使用nNewLength指定字符串的长度。
在调用
ReleaseBuffer或其它CString操作之后,由GetBuffer返回的地址是无效的。
ReleaseBuffer。
ReleaseBuffer示例
s="
abc"
;
LPTSTRp=s.GetBuffer(1024);
strcpy(p,"
);
//直接使用该缓冲区
ASSERT(s.GetLength()==3);
//字符串长度=3
s.ReleaseBuffer();
//释放多余的内存,现在p无效。
//长度仍然是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(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(strBang==“Everybodyplaysgolg”);
//注意,现在在你的句子中有了一个额外的空格。
//要移走这个额外的空格,可以将它包括在要被替换的字符串中,例如,“ice”。
11.CString:
ReverseFind
intReverseFind(TCHARch)const;
返回此CString对象中与要求的字符匹配的最后一个字符的索引;
如果没有找
到需要的字符则返回-1。
ch
要搜索的字符。
此成员函数在此CString对象中搜索与一个子串匹配的最后一个字符。
此函数
类似于运行时函数strrchr。
ReverseFind示例
CStrings("
abcabc"
ASSERT(s.ReverseFind('
b'
)==4);
12.CString:
Right
CStringRight(intnCount)const;
返回的字符串是最后nCount个字符。
ASSERT(s.Right
(2)==_T("
ef"
13.CString:
SetAt
voidSetAt(intnIndex,TCHARch);
可以把字符串理解为一个数组,SetAt类似于[].注意nIndex的范围,如果不合适会有调试错误。
Ch更替字符,把nIndex位置上的字符变成ch
s.MakeReverse();
ASSERT(s=="
cba"
14.CString:
TrimLeft
voidTrimLeft();
voidCString:
TrimLeft(TCHARchTarget);
如果没有参数,从左删除字符(\n\t空格等),至到遇到一个非此类字符.当然你也可以指定删除那些字符.如果指定的参数是字符串,那么遇上其中的一个字符就删除.
\n
换行符
\t
TAB字符
示例1:
CStringstr="
\n\ta"
str为“a”;
示例2:
abbcadbabcadb"
str.TrimLeft("
结果"
cadbabcadb"
ac"
bcadbabcadb"
15.CString:
TrimRight
voidTrimRight();
TrimRight(TCHARchTarget);
TrimRight(LPCTSTRlpszTargets);
用法类似于上面。
16.CString:
Compare
intCompare(LPCTSTRlpsz)const;
字符串一样返回0,小于lpsz
返回-1,大于lpsz
返回1,区分大小字符
CStrings1("
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:
19.CString:
CollateNoCase
intCollateNocase(LPCTSTRlpsz)const;
20.CString:
//构造函数
CString();
CString(constCString&
stringSrc);
CString(TCHARch,intnRepeat=1);
CString(LPCTSTRlpch,intnLength);
CString(constunsignedchar*psz);
CString(LPCWSTRlpsz);
CString(LPCSTRlpsz);
CStrings1;
cat"
CStrings3=s2;
CStrings4(s2+"
"
+s3);
CStrings5('
x'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC CString 用法小结 用法 小结