将CString转换为字符串(VC6)

时间:2010-06-02 01:13:16

标签: c++ visual-c++ vc6

我想将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中都能正常工作?

2 个答案:

答案 0 :(得分:4)

微软说CT2CA replaces T2CA,所以试试后者,看看是否有效。

答案 1 :(得分:1)

由于您不关心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;
}