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的轉化
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
至於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 等等...