2010-10-14 24 views
6

estoy tratando de imprimir un wstring/wchar_t en Xcode a la consola, pero desgraciadamente sólo funciona con caracteres básicos (creo ascii) caracteres, todo lo demás se muestra en números, por ejemplo los siguientes:xcode std :: wcout con wchar_t o std :: wstring!

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

mientras se imprime la versión cout "äöüu" como era de esperar me sale el siguiente al utilizar wchar_t:

\ 344 \ 366 \ 374u

alguna idea acerca de cómo solucionar este problema? Estoy usando xcode 3.2.2 64 bit y gcc 4.2 con codificación de archivos establecida en Unicode (UTF-8)

¡Gracias!

+1

Esto podría * * esperarse un comportamiento, como la codificación de la terminal suele ser UTF-8 y 'std :: ofertas wcout' con UTF-32. Pero tenga en cuenta que si compila con 'clang ++' (disponible en LLVM 2.8 y aún no distribuido con Xcode), genera el texto correcto en ambas ocasiones. – Nate

+0

¿Sucede cuando redirige la salida a un archivo o solo en el terminal? – ybungalobill

Respuesta

0

Si usa wxWidgets, wxString maneja esto automáticamente para usted, usando wxConvCurrent.

1

tuve un problema similar pero con wostream/wofstream. Googled y este fue el 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; 
} 
+0

tc_ofstream es un typedef para wofstream o ofstream (dependiendo de UNICODE –

Cuestiones relacionadas