xcode std :: wcout с помощью wchar_t или std :: wstring! - PullRequest
6 голосов
/ 14 октября 2010

Я пытаюсь вывести wstring / wchar_t в xcode на консоль, но, к сожалению, он работает только с базовыми символами (я думаю, ascii), все остальное отображается в числах, например, следующим:

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

пока cout-версия печатает "äöüu", как и ожидалось, я получаю следующее при использовании wchar_t:

\ 344 \ 366 \ 374u

есть идеи как это исправить? Я использую 64-битный xcode 3.2.2 и gcc 4.2 с кодировкой файла Unicode (UTF-8)

Спасибо!

Ответы [ 2 ]

1 голос
/ 24 ноября 2010

У меня была синиларная проблема, но с Wostream / Wofstream. Погуглил и это был ансер:

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;
}
0 голосов
/ 21 октября 2010

Если вы используете wxWidgets, wxString обрабатывает это для вас автоматически, используя wxConvCurrent.

...