[英]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.