CString/string/char*/char[]/int/float相互转化

本文介绍了在MFC编程中,如何实现CString与C/C++标准库中的字符串类型(如char*, string)之间的转换方法,并提供了实际代码示例。此外,还讨论了CString与基本数据类型(如int)的转换技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用MFC,我对话框中利用GetWindowText得到的字符串是CString型,CString是属于MFC的而一些C/C++函数是不能直接CString行操作的,所以我们经常遇到将CStringchar*等等其他数据型的情况。总结备忘于此!
首先要明确,C中是不存在string型的,stringC++充字符串操作的一个。但是我知道C中有string.h文件,里要区分清楚,此string非彼stringstring.h文件中定了一些我们经常用到的操作字符串的函数,如:strcpystrcatstrcmp等等,但是些函数的操作象都是char*指向的字符串。 而C++string操作象是string型字符串,该类重装了一些运算符,添加了一些字符串操作成函数,使得操作字符串更加方便。有的候我要将string串和char*串配合使用,所以也会涉及到两个型的问题
1.CString和string的
stringstr="ksarea";
CStringcstr(str.c_str());//或者CString cstr(str.data());初始化才行
cstr=str.c_str();或者cstr=str.data();
str=cstr.GetBuffer(0); //CString -> string
cstr.format("%s", str.c_str()); //string->CString
cstr.format("%s", str.data()); //string->CString
str = LPCSTR(cstr); //CString->string
/*c_str()和data()区是:前者返回'/0'的字符串,后者返回不'/0'的字符串*/
2.CString和int的转换
inti=123;
CStringstr;
str.format("%d",i);//int->CString
其他的基本
i=atoi(str);//CString->int 有(atof,atol)
3.char*和CString的转换
CStringcstr="ksarea";
char* ptemp=cstr.getbuffer(0);
char* str;
strcpy(str,ptemp);//CString->char*
cstr.releasebuffer(-1);

char*str="lovesha";
CStringcstr=str;//char*->CString string
型不能直接赋值给CString
至于intfloatstringchar*化可以使用化,或者函数行。CString与其他型的化方法很多,但其都殊途同,朝着一个方向即将型首先char*型,因char*是不同型之梁。得到char*型,其他型就非常容易了。
常用算法
a)      

作用
char*
string
CString
找指定
strchr
strstr
strrstr
strspn
find
Find
第一个匹配的
 
fild_first_of
FindOneOf
从后面开始
 
 
ReserveFind
指定匹配方式
 
find_if
 

注:find_if中是把范内的挨个代入匹配函数直至返回true
b)     

作用
char*
string
CString
找指定(区分大小写)
strcmp
strncmp
strcoll
_strncoll
operator<
operator>
operator<=
operator>=
operator==
operator!=
Collate
Compare
找指定(不区分大小写)
_stricmp
_strnicmp
_stricoll
_strnicoll
 
CollateNoCase
CompareNoCase

注:返回如果<0前面的小于后面的,反之亦然
c)     

作用
char*
string
CString
找指定
_strset
_strnset
replace
replace_copy
replace_copy_if
replace_if
Replace

d)      插入

作用
char*
string
CString
找指定
 
insert
Insert
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值