這三種型別各有各的優點,比如cstring比較靈活,是基於mfc常用的型別,安全性也最高,但可移植性最差。string是使用stl時必不可少的型別,所以是做工程時必須熟練掌握的;char*是從學習c語言開始就已經和我們形影不離的了,有許多api都是以char*作為引數輸入的。所以熟練掌握三者之間的轉換十分必要。
以下我用簡單的圖示指出三者之間的關係,並以標號對應轉換的方法。
cstring的format方法是非常好用的。string的c_str()也是非常常用的,但要注意和char *轉換時,要把char定義成為const char*,這樣是最安全的。
以上函式unicode編碼也沒問題:unicode下照用,加個_t()巨集就行了,像這樣子_t("%s")
補充:
cstring 可能是 cstringw/cstringa,在與 string 轉換時,如果是 cstringw,還涉及編碼轉換問題。下面以 cstringa 來說明。
1 string to cstring
cstring.format("%s",string.c_str());
cstringa = string.c_str() 就可以了
2 cstring to string
string str(cstring.getbuffer(str.getlength()));
getbuffer 有引數的話,可能導致內部的分配空間動作,要進行後續 releasebuffer 操作。
string = cstringa
string = cstringa.getbuffer();
3 string to char *
char *p=string.c_str();
4 char * to string
string str(char*);
5 cstring to char *
strcpy(char *,cstring,sizeof(char));
按照 3 風格,這裡應該 char * = cstringa; 或者 char *p = cstringa.getbuffer();
6 char * to cstring
cstringa = char * 就可以了
CString,string,char 之間的轉換
1 string to cstring cstring.format s string.c str 2 cstring to string string str cstring.getbuffer str.getlength 3 string to char char p string.c str ...
CString,string,char 之間的轉換
以下我用簡單的圖示指出三者之間的關係,並以標號對應轉換的方法。1 string to cstring cstring.format s string.c str 2 cstring to string string str cstring.getbuffer str.getlength 3 stri...
CString,string,char 之間的轉換
cstring string char 區別及其轉化 利用mfc進行程式設計時,我們從對話方塊中利用getwindowtext得到的字串是cstring型別,cstring是屬於mfc的類。而一些標準c c 庫函式是不能直接對cstring型別進行操作的,所以我們經常遇到將cstring型別轉化ch...