CString string 區別及其轉化

2021-06-29 15:47:10 字數 1981 閱讀 8182

利用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 區別及其轉化

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