CString string 區別及其轉化

2021-09-06 20:47:33 字數 1647 閱讀 9525

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 等等...