我有一個類,它返回一個類型指針「const TCHAR」。我需要將它轉換爲std :: string,但我還沒有找到一種方法來實現這一點。如何將「指向常量TCHAR的指針」轉換爲「std :: string」?
任何人都可以提供一些見解如何轉換它?
我有一個類,它返回一個類型指針「const TCHAR」。我需要將它轉換爲std :: string,但我還沒有找到一種方法來實現這一點。如何將「指向常量TCHAR的指針」轉換爲「std :: string」?
任何人都可以提供一些見解如何轉換它?
根據您的編譯設置,TCHAR
可能是char
或WCHAR
(或wchar_t
)。
如果您使用的是多字節字符串設置,那麼您的TCHAR
與char相同。所以你可以將你的字符串設置爲返回的TCHAR*
。
如果您使用的是Unicode字符串設置,那麼您的TCHAR
是一個寬字符,需要使用WideCharToMultiByte進行轉換。
如果您使用Visual Studio,我假設您是您可以在字符集下的項目屬性中更改此設置。
這取決於。如果你還沒有定義_UNICODE
或UNICODE
那麼你可以讓包含這樣的字符的字符串:
const TCHAR example = _T('Q');
std::string mystring(1, example);
如果您正在使用_UNICODE
和UNICODE
那麼這種方法可能仍然工作,但性格可能不是對可轉換一個char
。在這種情況下,您需要將字符轉換爲字符串。通常情況下,您需要使用像wcstombs
或WideCharToMultiByte
這樣的呼叫,這樣可以更全面地控制編碼。無論採用哪種方式,您都需要爲結果分配一個緩衝區,並從此緩衝區構建std::string
,記住一旦完成後釋放緩衝區(或使用類似vector<char>
這樣會自動發生)。
一切都是Brian說的。一旦你在你需要的代碼頁得到它,那麼你可以做:
std::string s(myTchar, myTchar+length);
或
std::wstring s(myTchar, myTchar+length);
得到它爲一個字符串。
您也可以使用方便的ATL文本轉換宏爲此,例如:
std::wstring str = CT2W(_T("A TCHAR string"));
CT2W =常數文本要寬。
您還可以爲轉換指定一個代碼頁,例如,
std::wstring str = CT2W(_T("A TCHAR string"), CP_SOMECODEPAGE);
自VS2005以來,這些宏(以其當前形式)可用於Visual Studio C++項目。
用返回的TCHAR作爲初始值創建一個新的std :: string:TCHAR xyz = fun();字符串轉換形式(xyz); ? – Leonidas 2010-01-26 19:08:06