1. 程式人生 > >實戰c++中的string系列--std::string與MFC中CString的轉換

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