[英]How do I convert a “pointer to const TCHAR” to a “std::string”?
我有一個類,它返回一個指向“const TCHAR”的類型指針。 我需要將它轉換為std :: string但我還沒有找到一種方法來實現這一點。
誰能提供一些有關如何轉換它的見解?
根據您的編譯設置, TCHAR
可以是char
或WCHAR
(或wchar_t
)。
如果使用多字節字符串設置,則TCHAR
與char相同。 所以你可以將你的字符串設置為返回的TCHAR*
。
如果您使用的是unicode字符串設置,那么您的TCHAR
是一個寬字符,需要使用WideCharToMultiByte進行轉換。
如果您使用的是我認為的Visual Studio,則可以在“字符集”下的項目屬性中更改此設置。
做一切Brian說的。 一旦你在你需要的代碼頁中得到它,你就可以:
std::string s(myTchar, myTchar+length);
要么
std::wstring s(myTchar, myTchar+length);
把它變成一個字符串。
您還可以使用方便的ATL文本轉換宏,例如:
std::wstring str = CT2W(_T("A TCHAR string"));
CT2W = Const文本到寬。
您還可以指定轉換的代碼頁,例如
std::wstring str = CT2W(_T("A TCHAR string"), CP_SOMECODEPAGE);
自VS2005以來,這些宏(以其當前形式)可用於Visual Studio C ++項目。
這取決於。 如果您尚未定義_UNICODE
或UNICODE
那么您可以創建一個包含如下字符的字符串:
const TCHAR example = _T('Q');
std::string mystring(1, example);
如果您正在使用_UNICODE
和UNICODE
則此方法可能仍然有效,但該字符可能無法轉換為char
。 在這種情況下,您需要將字符轉換為字符串。 通常,您需要使用wcstombs
或WideCharToMultiByte
等調用,以便更全面地控制編碼。
無論哪種方式,您都需要為結果分配緩沖區並從此緩沖區構造std::string
,記住在完成后釋放緩沖區(或者使用vector<char>
類的東西,以便自動發生)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.