是否可以在不覆盖输入中的当前文本的情况下进行cout?

时间:2013-11-13 07:50:43

标签: c++ cout cin

好的,我们假设我有一个程序可以在用户输入信息时输入一行。

对于这个例子,假设我们正在使用代码

cout << "THIS CODE IS BEING COUTED" << endl;

比方说,对于我们的例子,用户正在输入输入,因为它只是输入“你好”,但还没有输入。

就目前而言,当执行该行时,用户将看到 “helloTHIS CODE正在被削减” 他们将获得一条输入信息的新线。

我想做的不是cout'ing,我想在当前输入中获取文本,从输入中删除它,cout需要cout的线,然后重新输入信息输入。

这是否有意义或者这是一堆乱七八糟的废话?

感谢阅读。

编辑:澄清:我想要它,所以如果我输入一个字符串输入我的cout,cout将显示在我的输入上方,而不是插入我的输入。我还希望我的输入不受影响,以便用户可以继续输入或删除已输入的内容。

2 个答案:

答案 0 :(得分:0)

如果您逐个输入字符,那么当您需要输出文本时,可以通过打印回车符''\ r'将输出位置移动到行的开头。然后您的输出将覆盖当前输入,然后打印换行并重新打印到目前为止输入的内容

cout << "\r" << output << "\n" << currentinput;

如果输出短于输入,则只会部分覆盖输入,在这种情况下,您可以使用空格填充输出,直到当前输入的长度

答案 1 :(得分:0)

您可以在一个主线程中询问用户cin >> data,并在fread之类的其他帖子中读取stdin中的数据,或类似于FILE*句柄的内容。

在您想要的数据被用户输入后,您可以清除屏幕(例如clrscr()中的conio.h或其他任何更好的方式)并cout您想要的内容。