在MFC中各種資料型別之間的轉換

2021-07-23 14:35:22 字數 2037 閱讀 9203

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*型別,轉化為其他型別就非常容易了。

各種資料型別之間的轉換

1.c 中string到int的轉換 1 在c標準庫裡面,使用atoi include include std string text 152 int number std atoi text.c str if errno erange 可能是std errno else if errno 可能是e...

OC各種資料型別之間的轉換方法

nsnumber轉nsstring 假設現有一nsnumber的變數a,要轉換成nsstring型別的b 方法如下 nsnumberformatter numberformatter nsnumberformatter alloc init b numberformatter stringfromn...

各種資料型別OuO

char 1 個位元組 128 到 127 或者 0 到 255 unsigned char 1 個位元組 0 到 255 signed char 1 個位元組 128 到 127 int4 個位元組 2147483648 到 2147483647 unsigned int 4 個位元組 0 到 4...