cstring/string區別及其轉化
利用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
;cstring
str;
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";
cstring
cstr
=str
;//char*->cstring string
型別不能直接賦值給cstring
至於int與float、string與char*之間的轉化可以使用強制轉化,或者標準庫函式進行。對於cstring與其他型別的轉化方法很多,但其實都殊途同歸,朝著乙個方向即將型別首先轉化為char*型別,因為char*是不同型別之間的橋梁。得到char*型別,轉化為其他型別就非常容易了。
CString string 區別及其轉化
利用mfc進行程式設計時,我們從對話方塊中利用getwindowtext得到的字串是cstring型別,cstring是屬於mfc的類。而一些標準c c 庫函式是不能直接對cstring型別進行操作的,所以我們經常遇到將cstring型別轉化char 等等其他資料型別的情況。這裡總結備忘於此!首先要...
CString string 區別及其轉化
利用mfc進行程式設計時,我們從對話方塊中利用getwindowtext得到的字串是cstring型別,cstring是屬於mfc的類。而一些標準c c 庫函式是不能直接對cstring型別進行操作的,所以我們經常遇到將cstring型別轉化char 等等其他資料型別的情況。這裡總結備忘於此!首先要...
CString string 區別及其轉化
cstring string 區別及其轉化 利用mfc進行程式設計時,我們從對話方塊中利用getwindowtext得到的字串是cstring型別,cstring是屬於mfc的類。而一些標準c c 庫函式是不能直接對cstring型別進行操作的,所以我們經常遇到將cstring型別轉化char 等等...