CString strTest = _T("ABC 中国");
cout << (LPCTSTR)strTest << endl;如何在Unicode条件下在控制台输出完美的汉字呢???郁闷的字符编码啊,Unicode又有什么好呢?感觉不到和网页Unicode一样的好处,而只感觉到它的麻烦。

解决方案 »

  1.   

    实验了Unicode下wcout输出CString只能输出英文。测试代码:CString strTest = _T("ABC 中国");
    wcout << (LPCTSTR)strTest << endl;运行结果:ABC咋办呢?
      

  2.   

    要不要设置locale呢?标准c++都需要设置一下的。setlocale( LC_ALL,   "chinese-simplified"   ); 
      

  3.   

    加上std::wcout.imbue(locale("chs"));
    如:
     WCHAR* wc = L"abcd中国\n";
        std::wcout.imbue(locale("chs"));
        std::wcout << wc << endl;
      

  4.   

    我的问题是想在Unicode条件下输出CString的汉字,而非标准库的String。
      

  5.   

    首先要设置代码页:C下是 setlocale(LC_ALL, "chs");
    C++下是 wcout.imbue(locale("chs"));你要想使用CString, 注意定义UNICODE/_UNICODE, 这样才有CStringW
    或者你直接使用CStringW也可以.
      

  6.   

    还有字符串前加"L"扩展宽字符.
    比如: CStringW str = L"ABC 中国";