Вывод не-ASCII символа на консоль в C ++ с использованием repl.it - PullRequest
1 голос
/ 02 апреля 2020

Я использую repl.it для редактирования и компиляции кода C ++. Я хочу вывести обелус (знак деления) на консоль. Следующий код должен это сделать.

char div_sign ='\366';
cout << div_sign << endl;

Это работает в Visual Studio и из того, что я могу узнать, должно работать с любым компилятором. Тем не менее, я не получаю правильный вывод. Единственное, о чем я могу думать, это то, что repl не использует набор символов OEM. Любые предложения, чтобы заставить это работать правильно в repl?

1 Ответ

0 голосов
/ 10 апреля 2020

Единственное, о чем я могу думать, это то, что repl не использует набор символов OEM

Это правильно.

\366 (0xF6, 246) - это код символа ÷ в кодовой странице OEM-US / CP437.

repl.it обрабатывает то, что вы записываете в std::cout как UTF-8. Код Unicode для того же символа: \367 (0xF7, 247).

Кодирование в UTF-8 дает нам:

  std::cout << "\303\267";

, что дает ожидаемый результат на repl.it

...