是否可以在不覆盖输入中的当前文本的情况下进行 cout?
Posted
技术标签:
【中文标题】是否可以在不覆盖输入中的当前文本的情况下进行 cout?【英文标题】:Is it possible to cout without overwriting current text in the input? 【发布时间】:2013-11-13 07:50:43 【问题描述】:好的,假设我有一个程序可以在用户输入信息时计算一行。
对于这个例子,假设我们正在使用代码
cout << "THIS CODE IS BEING COUTED" << endl;
假设对于我们的示例,用户正在输入一个输入,而目前他们只输入了“hello”,但还没有按下回车键。
就目前而言,当该行执行时,用户将看到 “你好这个代码正在被计算” 他们将被赋予新的一行来输入信息。
我想要做的是而不是cout'ing,我想获取当前输入中的文本,从输入中删除它,cout需要cout'ed的行,然后重新输入输入信息。
这是有道理的还是一堆乱七八糟的废话?
感谢阅读。
编辑:澄清:我想要它,所以如果我在我的输入中输入了一个字符串并且我 cout,那么 cout 将显示在我的输入上方,而不是在我的输入之后插入它。我还希望我的输入不受影响,以便用户可以继续输入或删除已输入的内容。
【问题讨论】:
我不确定我对cout
被“动词化”的感觉!
我想知道您是否担心调试信息会干扰您的输入。如果是这样,您可以使用 cerr 并重定向它,或者使用调试日志文件
为什么要在用户输入内容时输出信息,cout 在另一个线程中?
【参考方案1】:
如果您逐个字符地获取输入,那么当您需要输出文本时,您可以通过打印回车符“\r”将输出位置移动到行首。然后您的输出将覆盖当前输入,然后打印换行符并重新打印到目前为止输入的内容
cout << "\r" << output << "\n" << currentinput;
如果输出比输入短,那么你只会部分覆盖输入,在这种情况下,你可以用空格填充输出,直到当前输入的长度
【讨论】:
【参考方案2】:您可以在一个带有cin >> data
的主线程中询问用户,并通过fread
或类似FILE*
句柄从其他线程中的标准输入读取数据。
在用户输入您想要的数据后,您可以清除屏幕(例如通过conio.h
中的clrscr()
或任何其他更好的方式)并找到您想要的数据。
【讨论】:
以上是关于是否可以在不覆盖输入中的当前文本的情况下进行 cout?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不覆盖当前数据的情况下更新 Mongoose 中的混合类型字段?
是否可以在不知道它们是啥的情况下覆盖所有 css 样式? [复制]