2010-11-25

如何用cout输出CString

嗯,这个本来没有什么。
直接cout输出的是地址,通过类型转换以后输出字符串。

可是如果你用VS2005及更高版本,那么会发现,情况变了,输出了第一个字符。
这是由于缺省是_UNICODE的。
所以需要这样写:
#ifdef _UNICODE
    /*这些都可以
    wchar_t * pTemp = (wchar_t *)csInput.GetBuffer(csInput.GetLength());
    wcout << pTemp << endl;

    wcout << (wchar_t *)csInput.GetString() << endl;
    wcout << (LPCTSTR)csInput << endl;
    wcout << (wchar_t *)(LPCTSTR)csInput << endl;
    wcout << (wchar_t *)(csInput.GetBuffer(csInput.GetLength())) << endl;
    wcout << (csInput.GetBuffer(csInput.GetLength())) << endl;
    */
#else
    /*这些都可以
    cout << (char *)csInput.GetString() << endl;
    cout << (LPCTSTR)csInput << endl;
    cout << (char *)(LPCTSTR)csInput << endl;
    cout << (char *)(csInput.GetBuffer(csInput.GetLength())) << endl;
    cout << (csInput.GetBuffer(csInput.GetLength())) << endl;
    */

No comments: