【问题标题】:Can I use what I have printed out to the console window as an input?我可以使用打印到控制台窗口的内容作为输入吗?
【发布时间】:2016-05-02 09:17:12
【问题描述】:

假设我已经使用std::cout<< 向我的控制台应用程序打印了一个值并且还没有结束该行,然后我想将数据添加到同一行并通过getline(cin, MyInput) 将其输入到我的程序中,但是我想利用整行,而不仅仅是通过键盘输入的值。

考虑到屏幕上打印出来的数值是5,然后通过键盘输入*6,那么我的程序应该乘以5*6! (这不是我的程序的目的,我只是想传达这个想法)

我尝试使用一个变量来保存打印到控制台应用程序上的值,然后我重用了这个变量,但这不是理想的解决方案,我正在寻找一种方法来考虑打印在一行上的所有内容(无论是它来自 cin 或 cout) 作为一个!

【问题讨论】:

  • 将它们存放在容器中?
  • 你认为“不是理想的解决方案”实际上是(部分)理想的解决方案,即程序操作某种数据结构,完全与 I/O 断开连接。
  • 呃……也许你可以,但这会很复杂而且很奇怪。这个答案有你需要的东西,但它几乎肯定不是你想做的,而且它相当先进:stackoverflow.com/a/9084222/493106
  • @molbdnilo,唯一的问题是涉及的步骤太多,我希望通过使用我不知道的现有功能来避免!

标签: c++ console-application std


【解决方案1】:

您正在尝试做的事情听起来像是一个糟糕的设计。如果用户启动了一个后台进程向控制台发送垃圾,您真的想将其作为输入的一部分吗?

我认为您正在尝试做的是在输入/输出操作中存储和检索一些状态。

做到这一点的简洁方法是拥有一个为您执行输入/输出的专用组件/库。这样,当您输出某些内容时,库可以存储它(如果它不用于存储,则将其丢弃,例如调试输出)。当您想读取某些内容时,同一个库可以提供存储的数据并将其与从 cin 获取的数据合并。

【讨论】:

  • 谢谢,我现在正在尝试这样做!看起来没有办法减少我必须执行的步骤!
猜你喜欢
  • 1970-01-01
  • 2011-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-27
  • 1970-01-01
  • 2020-09-15
  • 1970-01-01
相关资源
最近更新 更多