實戰c++中的string系列--std::string與MFC中CString的轉換


搞過MFC的人都知道cstring,給我們提供了非常多便利的方法。

CString 是一種非常實用的數據類型。

它們非常大程度上簡化了MFC中的很多操作,使得MFC在做字符串操作的時候方便了非常多。無論如何,使用CString有非常多特殊的技巧,特別是對於純C背景下走出來的程序猿來說有點難以學習。

可是非常多情況下,我們還是須要cstring和string的轉換。
分兩步:
1把cstring轉為char數組
2依據char數組,構造自己的string(記得釋放內存)

std::string CStringToSTDStr(const CString& theCStr)
{
    const int theCStrLen = theCStr.GetLength();
    char *buffer = (char*)malloc(sizeof(char)*(theCStrLen+1));
    memset((void*)buffer, 0, sizeof(buffer));
    WideCharToMultiByte(CP_UTF8, 0, static_cast<cstring>(theCStr).GetBuffer(), theCStrLen, buffer, sizeof(char)*(theCStrLen+1), NULL, NULL);

    std::string STDStr(buffer);
    free((void*)buffer);
    return STDStr;
}

而string轉cstring那就非常輕松了:

string str="abcde";
CString cstr(str.c_str());


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM