CString 與 ::std::string ::std::wstring 之間的轉換

| 0 Comments| | 16:50
Categories:

CString to std::string

簡單方式:

CString cs("Hello");
std::string s((LPCTSTR)cs);

但是: std::string 並非總是能用 LPCTSTR 正確的建構出來。例如, 這個程式碼在 UNICODE 組態下 build 會失敗

由於 std::string 的標準建構元為 LPSTR / LPCSTR, 程式設計師要不就是用 VC++ 7.x 以上的版本, 或是使用轉換用的 classes 像是 CT2CA

CString cs("Hello");
// Convert a TCHAR string to a LPCSTR
CT2CA ascii(cs);
// construct a std::string using the LPCSTR input
std::string strStd(ascii);

or

CString str(_T("Hello, world!"));
CT2A ascii(str);
std::string s(ascii.m_psz);

std::string to CString

std::string s("Hello");
CString cs(s.c_str());

CStringT 能夠建構來自 character 或是 wide-character 的字串, 而且不用特別在字串的尾端特別放進 NULL, 如 std::string s(“Hello\0”);

ref: How to convert CString and ::std::string ::std::wstring to each other?

#unicode #ansi #convert

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *