同时打印多行C ++

时间:2014-02-01 02:09:16

标签: c++ output

#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
void slowPrint(unsigned long speed, const char *s)
{
   int i = 0;
   while(s[i]!=0)
   {
      cout << s[i++];
      cout.flush();
      Sleep(speed);
   }
}
int main()
{
      char choice;

      cout << "================================================================================\n";
      slowPrint(80, " \"Words being said\"\n\n");
      cout << "================================================================================\n";
      cin >> choice;

      return 0;
}

所以我想知道我是否能够以某种方式同时打印19-21行。而不是只打印第一个“=== ...”,然后从第20行慢速输入,最后是代码的结束。

或者有没有办法甚至输出两个“===”条,然后慢慢输入它们之间的线。

如果可以,请帮忙!

感谢。

(你可能会对如何措辞这一点感到困惑,但很难解释。如果需要,我可以尝试深入解释。)

1 个答案:

答案 0 :(得分:0)

将精美的东西打印到终端屏幕的一种方法是使用转义序列。如果您曾经想过键盘如何告诉您的计算机有关箭头键输入的信息,即使这些操作没有明确的ASCII键,也可以使用转义序列。

转义序列以转义字符或ASCII值27开始。要向上移动光标,您需要以下几行:

char esc(27); //You need to initialize the escape character by calling its ASCII value
std::cout << esc << "[1A" // This line moves the cursor up.
          << "\r"; // This line moves the cursor all the way back to the left.

因此,为了获得您想要的输出,请尝试使用以下内容作为主体:

char choice,esc(27);

std::cout << "================================================================================\n\n"
          << "================================================================================"
          << esc << "[1A\r";
slowPrint(1, " \"Words being said\"\n\n");
std::cin >> choice;

return 0;

有许多转义序列可用于控制终端。例如,尝试打印以下转义序列,然后打印其他一些文本。

"[1;31m"

有关更多转义序列,请参阅以下链接。

http://ascii-table.com/ansi-escape-sequences.php