xcode std :: wcout with wchar_t或std :: wstring!

时间:2010-10-14 17:22:59

标签: c++ xcode string character-encoding

我正在尝试将xcode中的wstring / wchar_t打印到控制台但不幸的是它只适用于基本字符(我认为是ascii)字符,其他所有内容都以数字显示,例如以下内容:

std::cout << "äöüu"<< std::endl;
std::wcout << L"äöüu" << std::endl;

虽然cout版本按预期打印“äöüu”,但在使用wchar_t时会得到以下内容:

  

\ 344 \ 366 \ 374U

有关如何解决此问题的任何想法?我使用xcode 3.2.2 64位和gcc 4.2,文件编码设置为Unicode(UTF-8)

谢谢!

2 个答案:

答案 0 :(得分:1)

我有一个类似的问题,但ifstream / ofstream。谷歌搜索它,这是anser:

tc_ofstream ofs;

if (sizeof(TCHAR) == sizeof(wchar_t))
{
    //codecvt_utf16<TCHAR> utf16; cannot make use of non-dynamic value
    locale   loc ( locale::classic() ,new codecvt_utf16<TCHAR> );
    ofs.imbue( loc );
    ofs.open( _T(".\\test.txt") ,tc_ios::binary );

    TCHAR BOM = 0xFEFF;    ofs << BOM;
    ofs << _T("UNICODE") << endl;
}
else
{
    ofs.open( _T(".\\test.txt") ,tc_ios::binary );
    ofs << _T("NON-UNICODE") << endl;
}

答案 1 :(得分:0)

如果你使用wxWidgets,wxString会使用wxConvCurrent自动处理这个问题。