Неверный вывод при выводе текста, преобразованного в ASCII cout, переполнение стека

Я работаю над простой в терминальной игре. Но когда я пытаюсь вывести некоторые в ASCII преобразованный текст. Я получаю неправильный вывод.

код;

    cout << "   _________    _____   ____     _______  __ ___________ "<<'\n';
cout << " / ___\__  \  /     \_/ __ \   /  _ \  \/ // __ \_  __ \ "<<'\n';
cout << " / /_/  > __ \|  Y Y  \  ___/  (  <_> )   /\  ___/|  | \/"<<'\n';
cout << " \___  (____  /__|_|  /\___  >  \____/ \_/  \___  >__|   "<<'\n';
cout << "/_____/     \/      \/     \/                   \/       "<<'\n';

выход:

      _________    _____   ____     _______  __ ___________
/ _____    /     _/ __    /  _   / // __ _  __
/ /_/  > __ |  Y Y    ___/  (  <_> )   /  ___/|  | /
___  (____  /__|_|  /___  >  ____/ _/  ___  >__|
/_____/     /      /     /                   /

-3

Решение

C ++ использует \ в струнах как побег персонаж, поэтому он не отображается напрямую, но вам придется использовать \\ для отображения обратной косой черты. Недостатком этого является то, что ваши строки могут сильно отличаться от результатов программы:

std::cout << "   _________    _____   ____     _______  __ ___________ "        <<'\n';
std::cout << " / ___\\__  \\  /     \\_/ __ \\   /  _ \\  \\/ // __ \\_  __ \\ "<<'\n';
std::cout << " / /_/  > __ \\|  Y Y  \\  ___/  (  <_> )   /\\  ___/|  | \\/"    <<'\n';
std::cout << " \\___  (____  /__|_|  /\\___  >  \\____/ \\_/  \\___  >__|   "   <<'\n';
std::cout << "/_____/     \\/      \\/     \\/                   \\/       "    <<'\n';

В C ++ 11 необработанные строковые литералы делать жизнь легче. Просто оберните ваши строки так: R"(yourstring)"

std::cout << R"(   _________    _____   ____     _______  __ ___________ )"<<'\n';
std::cout << R"( / ___\__  \  /     \_/ __ \   /  _ \  \/ // __ \_  __ \ )"<<'\n';
std::cout << R"( / /_/  > __ \|  Y Y  \  ___/  (  <_> )   /\  ___/|  | \/)"<<'\n';
std::cout << R"( \___  (____  /__|_|  /\___  >  \____/ \_/  \___  >__|   )"<<'\n';
std::cout << R"(/_____/     \/      \/     \/                   \/       )"<<'\n';
2

Другие решения

Хех, просто двойной \ или использовать R строка.

std::cout << "   _________    _____   ____     _______  __ ___________ " << '\n';
std::cout << " / ___\\__  \\  /     \\_/ __ \\   /  _ \  \\/ // __ \\_  __ \\ " << '\n';
std::cout << " / /_/  > __ \\|  Y Y  \\  ___/  (  <_> )   /\\  ___/|  | \\/" << '\n';
std::cout << " \\___  (____  /__|_|  /\\___  >  \\____/ \\_/  \\___  >__|   " << '\n';
std::cout << "/_____/     \\/      \\/     \\/                   \\/       " << '\n';_________    _____   ____     _______  __ ___________
/ ___\__  \  /     \_/ __ \   /  _   \/ // __ \_  __ \
/ /_/  > __ \|  Y Y  \  ___/  (  <_> )   /\  ___/|  | \/
\___  (____  /__|_|  /\___  >  \____/ \_/  \___  >__|
/_____/     \/      \/     \/                   \/
2

По вопросам рекламы [email protected]