繁体   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