質問

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;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top