Расширенные символы Ascii в Code::Blocks C++

Я пытаюсь использовать расширенные коды Ascii в консольном приложении, используя C++ и Code::Blocks (коды символов больше 128). http://www.asciitable.com/ В консоли отображается знак вопроса внутри ромба.

Я пробовал до сих пор:

char myChar = 200;
cout << myChar;

cout << static_cast<char>(200);

person Julián Muriel Tejo Rodríguez    schedule 07.02.2012    source источник
comment
Расширенного ASCII не существует. Укажите желаемую кодировку, а также настройте консоль на использование указанной кодировки.   -  person Lightness Races in Orbit    schedule 08.02.2012
comment
Если мы хотим назвать это расширенным ascii, мы можем это сделать. Так что!   -  person David Heffernan    schedule 08.02.2012
comment
@DavidHeffernan: проблема в том, что существует много расширенных кодировок ASCII. Обратитесь к похожему вопросу с лучшими ответами.   -  person André Caron    schedule 08.02.2012
comment
В вашей ссылке указана кодовая страница 437. Я рекомендую прочитать эту статью соавтора этого веб-сайта, чтобы немного улучшите свои знания о кодировках символов.   -  person Benjamin Lindley    schedule 08.02.2012
comment
Допустим, я хочу использовать кодировку UTF-8 и печатать символы в консоли. Как мне это сделать?   -  person Julián Muriel Tejo Rodríguez    schedule 08.02.2012


Ответы (1)


char не может содержать весь набор символов

вместо этого используйте unsigned char.

unsigned char myChar = 200;
cout << myChar << endl;

char обычно является знаковым char. он может содержать значения от -128 до 127. ASCII хорошо подходит для значений от 0 до 127, поэтому char подходит при работе с ASCII.

Для не-ASCII-символов от 128 до 255 вам понадобится нечто большее. unsigned char может хранить значения от 0 до 255. Это охватывает весь набор символов. Это как раз то, что вам нужно.

Есть и другие вещи для исследования. Вы можете прочитать о юникоде. Но unsigned char должен решить вашу текущую проблему.

person EvilTeach    schedule 07.02.2012