簡體   English   中英

如何將“指向const TCHAR的指針”轉換為“std :: string”?

[英]How do I convert a “pointer to const TCHAR” to a “std::string”?

我有一個類,它返回一個指向“const TCHAR”的類型指針。 我需要將它轉換為std :: string但我還沒有找到一種方法來實現這一點。

誰能提供一些有關如何轉換它的見解?

根據您的編譯設置, TCHAR可以是charWCHAR (或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 ++項目。

這取決於。 如果您尚未定義_UNICODEUNICODE那么您可以創建一個包含如下字符的字符串:

const TCHAR example = _T('Q');
std::string mystring(1, example);

如果您正在使用_UNICODEUNICODE則此方法可能仍然有效,但該字符可能無法轉換為char 在這種情況下,您需要將字符轉換為字符串。 通常,您需要使用wcstombsWideCharToMultiByte等調用,以便更全面地控制編碼。

無論哪種方式,您都需要為結果分配緩沖區並從此緩沖區構造std::string ,記住在完成后釋放緩沖區(或者使用vector<char>類的東西,以便自動發生)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM