MFC中CString和string的轉換問題

2021-09-01 00:02:12 字數 740 閱讀 6100

說在前面的話:

利用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*串配合使用,所以也會涉及到這兩個型別的轉化問題。

------解決方案--------------------

unicode:

cstring sz1 = l"abc";

std::string sz2 = ct2a(sz1.getbuffer()); //轉化為非unicode.

非unicode:

cstring sz1 = "abc";

std::string sz2 = sz1.getbuffer();  

MFC中關於CString 引數傳遞

當定義類介面時,必須確定為成員函式確定引數傳遞約定。現在有一些傳遞和返回 cstring 物件的標準規則。如果遵循作為函式輸入的字串和作為函式輸出的字串中所述的規則,那麼將得到正確而又有效的 作為函式輸入的字串 如果字串是某個函式的輸入,在大多數情況下,最好將該字串函式引數宣告為 lpctstr。在...

MFC中 CString型 轉到 int型

兩種方法可以用 1 可以為edit控制項關聯乙個int型的變數,然後通過使用updatedata函式來更新資料。2 直接用atoi函式 cstring str 12345 int a atoi str 補充 我知道你的問題所在了,vs2008預設的編碼方式是unicode,unicode下不能用at...

MFC執行緒中Cstring型別的比較注意

cdatabase m db 資料庫物件 m db.open t yourdatabase ctable m rs 資料庫 表物件 void threadproc hm struct t hm cstring sql sql t select fault code from realdataa m ...