2013-02-07 4 views
-1
#include <iostream> 
#include <locale> 

using namespace std; 

int main() 
{ 
    wcout.imbue(/* What to place here? */); 

    for (wchar_t c = 0; c <= 0xFFFF; c++) 
    { 
     if (IsHumanReadable(c)) 
     { 
      wcout << c; // c may be a Chinese or Arabic character. 
     } 
    } 
} 

Моя машина Windows 7, основанная на Unicode.Почему std :: wcout не выводит все символы UCS-2?

В приведенном выше коде не выводятся арабские символы, тогда как тот же символ может быть правильно показан в исходном файле, что свидетельствует о том, что моя машина поддерживает отображение арабских символов.

Почему арабские символы не отображаются в окне консоли?

+4

* «Как заставить работу работать должным образом?» *. Помимо очевидных (это работает) каковы ваши конкретные ожидания? Большое количество значений, которые вы пытаетесь испускать, даже не являются допустимыми кодовыми точками. вы ожидаете, что они тоже будут работать? – WhozCraig

+0

т. Е. Вывод всех человеческих читаемых символов. – xmllmx

+0

И как этот код не соответствует вашим ожиданиям? – Praetorian

ответ

0

Первая линия должна быть

_setmode(_fileno(stdout), _O_WTEXT); 

который является эквивалентом Windows, соответствующего пропитать() для вывода широких символов (они до сих пор не поддерживают Unicode в стандартном C++ для того, что C++ 11 из кроме требование).

Проверьте MSDN для заголовков #include

отметить также, что шрифт, установленный в окне консоли часто не хватает много других программ Windows, может отображать. В случае сомнений переадресуйте вывод программы в файл и откройте этот файл с помощью Wordpad и т. Д.

Смежные вопросы