我知道这是一个奇怪的问题,但有没有办法从控制台读取以前的输入。类似的东西:
The fox is brown // line 1
The duck is yellow // line 2
Here where the control is right now_ // but I want to read line 2
P.S:我正在使用Windows
答案 0 :(得分:3)
如果通过阅读上一个输入,您的意思是在C ++程序中,答案是肯定的。标准输入是stream,它维护一个读缓冲区。
快速和脏,以放松流并读取相同的行两次
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "Enter a line of text and you will see it echo twice\n";
string mystring;
getline(cin, mystring);
cout << mystring;
cout << "\n";
// reverse the input stream by the lengtht of the read string (+1 for the newline)
for (int i = 0; i <= mystring.length(); i++)
{
cin.unget();
}
string mystring2;
getline(cin, mystring2);
cout << mystring2;
cout << '\n';
}
答案 1 :(得分:1)
可以通过一些假设来完成,但会带来一些您可能会发现过于严格的限制。所以最好找到一种不这样做的方法。
使用ncurses库,您可以完全控制终端和读/写符号到屏幕上的任何位置。但是如果你这样做,你将负责控制它,这包括滚动文本。除非您自己实现,否则也无法滚动终端。除此之外,您还需要牢记屏幕尺寸并处理它的变化。请注意,您的程序也可以在不支持该模式的终端下启动。
所以,如果可以将用户输入存储在程序中而不是将其存储在屏幕上,请不要弄乱它。
答案 2 :(得分:0)
这看起来非常接近。
历史|尾巴-n 2