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

时间:2017-08-11 08:51:23

标签: c++ output ascii cout malformed

我正在开发一款简单的终端游戏。但是,当我尝试输出一些ASCII转换文本。我的输出结果不正确。

代码;

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

输出:

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

1 个答案:

答案 0 :(得分:2)

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