我有一个类,它返回一个类型指针“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