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

利用MFC ,我 对话 框中利用GetWindowText得到的字符串是CString 型,CString是属于MFC的 而一些 C/C++ 函数是不能直接 CString 行操作的,所以我 们经 常遇到将 CString char* 等等其他数据 型的情况。 总结备 忘于此!
首先要明确, C 中是不存在 string 型的, string C++ 充字符串操作的一个 。但是我 知道 C 中有 string.h 文件, 里要区分清楚,此 string 非彼 string string.h 文件中定 了一些我 们经 常用到的操作字符串的函数,如: strcpy strcat strcmp 等等,但是 些函数的操作 象都是 char* 指向的字符串。 而 C++ string 操作 象是 string 型字符串, 该类 重装了一些运算符,添加了一些字符串操作成 函数,使得操作字符串更加方便。有的 候我 要将 string 串和 char* 串配合使用,所以也会涉及到 两个 型的 问题
1.CString和string的
string str = " ksarea " ;
CString cstr ( 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的转换
CString cstr = " 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
至于 int float string char* 化可以使用 化,或者 函数 行。 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、付费专栏及课程。

余额充值