【问题标题】:Malformed output when outputting text converted to ASCII with cout, C++输出使用 cout、C++ 转换为 ASCII 的文本时输出格式错误
【发布时间】:2017-08-11 08:51:23
【问题描述】:

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

代码;

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

输出:

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

【问题讨论】:

  • 你知道反斜杠表示转义字符吗?尝试原始字符串文字。

标签: c++ output ascii cout malformed


【解决方案1】:

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';

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      相关资源
      最近更新 更多