Intereting Posts
gcc: Как использовать __attribute ((__ may_alias__)) правильно, чтобы избежать предупреждения о прерывании типа «пушечный указатель» Я что-то пропустил в своем заявлении о c ++? Должен ли я получить блокировку перед вызовом condition_variable.notify_one ()? Возможно ли реализовать события на C ++? Требования к std :: ignore Оператор c ++ перегружает, как реализовать шаблон, например, ctor Mat_ в opencv Visual 2010 продолжает говорить мне: «Ошибка: выражение должно иметь тип classа» Могу ли я загрузить компилятор командной строки Visual C ++ без Visual Studio? Могу ли я избежать рекурсии шаблонов здесь? Назначение посредством копирования и замены по сравнению с двумя замками Почему вызов istream :: tellg () влияет на поведение моей программы? std :: make_shared как аргумент по умолчанию не компилируется c ++: инициализация элементов статической строки pthread убивает после определенной продолжительности Проблема с швом при сопоставлении текстуры с сферой в OpenGL

«Cout» не работает с китайскими иероглифами

Мои коды просты:

#include  using namespace std; //Some codes here... bool somefunction(){ cout<<"单元格"; return false; } 

и это то, что я получил:

 ошибка C2143: синтаксическая ошибка: отсутствует ';'  перед «возвратом»;
 ошибка C2001: новая строка является постоянной;

Более того, если я изменю "单元格" на английскую версию, такую ​​как «cell», она отлично работает;

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

 wcout << L"\x5355\x5143\x683c"; 

Если вам нужно выводить символы в определенной кодировке (например, gb2312), используйте эту кодировку в строковом литерале:

 cout << "\xb5\xa5\xd4\xaa\xb8\xf1"; // string encoded with GB2312 

Для работы с неанглийскими наборами символов вы должны использовать std::wcout для печати широких символов, например

 #include  using namespace std; //Some codes here... bool somefunction(){ wcout<< L"单元格"; return false; } 

И не забудьте смешивать оба cout и wcout в одной программе.

Используйте литералы wcout и Unicode (L “单元 格”). Эта хорошая практика, даже если вы имеете дело только с английскими персонажами. Также используйте wstring.

Изменить: На самом деле другой проблемой может быть то, что вы храните файл в кодировке, отличной от Юникода, поэтому символы теряются. Сообщите вашему редактору сохранить файл как Unicode.

Другая проблема может заключаться в том, что консоль (или wcout) не отображает символы Unicode правильно. Если вы отображаете их в окне сообщений (с MessageBoxW), они отображаются правильно.

Вы всегда должны сохранять исходный код как UTF-8 с помощью спецификации.