使用 cout、C++ 输出转换为 ASCII 的文本时格式错误的输出

Malformed output when outputting text converted to ASCII with cout, C++

我正在开发一款简单的终端游戏。但是当我尝试将一些内容输出为 ASCII 转换文本时。我得到格式错误的输出。

代码;

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

输出:

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

嘿,只需加倍 \ 或使用 R 字符串。

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


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

C++ 在字符串中使用 \ 作为 escape character,所以它不会直接显示,但你必须使用 \ 来显示反斜杠。这样做的缺点是您的字符串可能与之后的程序输出看起来非常不同:

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

在 C++11 中,raw string literals 让生活更轻松。像这样包裹你的字符串:R"(yourstring)"

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