待讀 CString stirng 區別及其轉換

2021-06-16 04:15:27 字數 2137 閱讀 2174

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();

cstr

.format("

%s", str

.c_str

());

//string->cstring

cstr

.format("

%s", str

.data

());

//string->cstring

str=

cstr

.getbuffer(0

); //cstring -> string

str=

lpcstr

(cstr);

//cstring->string

/*c_str()

和data()區別是:前者返回帶'/0'的字串,後者則返回不帶'/0'的字串*/

2.cstring和int的轉換

int i

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

稀疏矩陣及其轉置

係數矩陣的儲存方式 三元組 typedef struct triple element triple element 三元組用於儲存矩陣的每乙個元素 額外需要乙個表頭來表示整個矩陣 typedef struct triple matrix triple matrix 初始化及輸入矩陣 triple ...

HTTP請求頭及其作用 轉

http請求頭header及其作用詳解 下面是訪問的乙個url,的乙個header,根據例項分析各部分的功能和作用。1 accept,瀏覽器端能夠處理的內容型別。例如 accept text html 代表瀏覽器可以接受伺服器回發的型別為 text html 也就是我們常說的html文件。如果伺服器...

CString string 區別及其轉化

利用mfc進行程式設計時,我們從對話方塊中利用getwindowtext得到的字串是cstring型別,cstring是屬於mfc的類。而一些標準c c 庫函式是不能直接對cstring型別進行操作的,所以我們經常遇到將cstring型別轉化char 等等其他資料型別的情況。這裡總結備忘於此!首先要...