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

Is it possible to cout without overwriting current text in the input?

本文关键字:文本 cout 情况下 输入 覆盖 是否      更新时间:2023-10-16

好的,假设我有一个程序,当用户可能正在输入信息时,它会发出一行。

对于此示例,假设我们正在使用

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

假设在我们的示例中,用户正在键入输入,并且目前他们只输入了"hello",但尚未按 Enter 键。

就目前而言,当执行该行时,用户将看到"你好这个代码正在被淘汰"并且将为他们提供一个新行来输入信息。

我想做的不是 cout'ing,而是获取当前输入中的文本,将其从输入中删除,删除需要 cout'ed 的行,然后将信息重新输入到输入中。

这有意义还是一堆混乱的废话?

感谢您的阅读。

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

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

cout << "r" << output << "n" << currentinput;
如果输出短于输入,

则只会部分覆盖输入,在这种情况下,您可以使用最大为当前输入长度的空格填充输出

您可以在一个主线程中询问用户,并在那里cin >> data,并通过fread或类似的东西从另一个线程中的 stdin 读取数据,该数据适用于FILE*句柄。

用户输入所需的数据后,您可以清除屏幕(例如,通过conio.h clrscr()或任何其他更好的方式)并找出您想要的内容。