0

Всем привет. Хочу сделать свой проект с ascii символами. Чтобы его реализовать, мне нужно как-то отрисовать карту в консоле. Видел, что другие просто делают двумерный массив символов и в нем сохраняют. Но я пошел по другому пути: пробовал сначала сделать карту в txt файле и далее просто считать её, но вместо того, чтобы выводить , оно делает каракули, например, тЦС.

Вывожу с файла информацию так:

void level::load_level(string file_name)
{
     ifstream file;
     file.open(file_name);
 if (file.fail())
 {
     perror(file_name.c_str());
     system("pause");
     exit(1);
 }

 string line;
 while (getline(file, line))
 {
     level_data.push_back(line);
 }

 file.close();

}

void level::print() { for (int i = 0; i < level_data.size(); i++) cout << level_data[i] << endl; cout << endl; }

Кто-нибудь сталкивался с этой проблемой, если да, то как её можно решить? Или вы можете посоветовать другой вариант для сохранения и вывода в консоль

P.S Работаю в VS 2019

Vova
  • 1
  • ░ не является ascii символом, А для отрисовки в консоль превдографики следует завести одномерный массив символов wchar_t см https://ru.stackoverflow.com/questions/842709/%d0%9a%d0%b0%d0%ba-%d0%bd%d0%b0%d0%bf%d0%b8%d1%81%d0%b0%d1%82%d1%8c-%d1%82%d0%b5%d0%ba%d1%81%d1%82-%d1%81%d0%b8%d0%bc%d0%b2%d0%be%d0%bb%d0%b0%d0%bc%d0%b8-%d0%b2-%d0%ba%d0%be%d0%bd%d1%81%d0%be%d0%bb%d1%8c-visual-studio/842734#842734 и https://ru.stackoverflow.com/questions/811009/c-vs-%D0%9C%D0%B8%D0%BD%D0%B8-%D0%B8%D0%B3%D1%80%D0%B0-%D0%B2-%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8/811056 – user7860670 May 19 '22 at 18:16
  • Возможно, я ошибаюсь, но этот символ, ░, тут есть под индексом 177 ссылка. А можно вот эту псевдографику в файл запихнуть и оттуда считать? – Vova May 19 '22 at 18:34
  • Там под названием "Extended ASCII Codes" расписана https://en.wikipedia.org/wiki/Code_page_437 А вообще это юникод символ U+2591. – user7860670 May 19 '22 at 18:38
  • Символы псевдографики использовались в MS DOS. Следовательно, для того, чтобы символ '░' отображался именно как '░', а не '°' или ещё как-нибудь, необходимо использовать либо кодировку 866 (применялась в DOS), либо Юникод. – LShadow77 May 19 '22 at 20:49

0 Answers0