MFC C++ Cstring與string互轉
阿新 • • 發佈:2018-12-11
CString 轉換成string我試了很多的方法,都不行,我用的vs2010------解決方案--------------------unicode:CString sz1 = L"abc";std::string sz2 = CT2A(sz1.GetBuffer()); //轉化為非unicode.非unicode:CString sz1 = "abc";std::string sz2 = sz1.GetBuffer(); ------解決方案--------------------樓上正解,再提供幾個UNICODE下的方法
- C/C++ code
//方法一 CString theCStr; std::string STDStr( CW2A( theCStr.GetString() ) ); //採用的方法CString/string 區別及其轉化//方法二 CString m_Name; CT2CA pszName(m_Name); std::string m_NameStd(pszName); //方法三 CString str = L"Test"; std::wstring ws(str); std::string s; s.assign(ws.begin(), ws.end());
利用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 |