将CSTRING转换为字符串(VC6)
-
23-10-2019 - |
题
我想将Cstring转换为字符串。 (是的。我知道我在做什么。我知道返回的字符串是不正确的,如果Cstring值范围在ANSI之外,但这还可以!)
以下代码将根据VC2008工作。
std::string Utils::CString2String(const CString& cString)
{
// Convert a TCHAR string to a LPCSTR
CT2CA pszConvertedAnsiString (cString);
// construct a std::string using the LPCSTR input
std::string strStd (pszConvertedAnsiString);
return strStd;
}
但是VC6没有CT2CA宏。如何使代码在VC6和VC2008中都可以正常工作?
解决方案
微软这样说 CT2CA取代T2CA, ,因此请尝试后者,看看是否有效。
其他提示
由于您不在乎ANSI范围之外的角色,因此蛮力会起作用。
std::string Utils::CString2String(const CString& cString)
{
std::string strStd;
for (int i = 0; i < cString.GetLength(); ++i)
{
if (cString[i] <= 0x7f)
strStd.append(1, static_cast<char>(cString[i]));
else
strStd.append(1, '?');
}
return strStd;
}
不隶属于 StackOverflow