これは奇妙な質問だと思いますが、コンソールから以前の入力を読み取る方法はありますか?
何かのようなもの:
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
PS:私はWindowsを使用しています
これは奇妙な質問だと思いますが、コンソールから以前の入力を読み取る方法はありますか?
何かのようなもの:
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
PS:私はWindowsを使用しています
前の入力を読むことによって、C++ プログラム内から意味する場合、答えはイエスです。標準入力は、読み取りバッファーを保持するストリームです。
ストリームを巻き戻し、同じ行を 2 回読み取るのは簡単で汚い
#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';
}
これはいくつかの仮定の下で行うことができますが、厳しすぎると感じるかもしれないいくつかの制限があります。ですから、そうしない方法を見つける方が良いでしょう。
ncursesライブラリを使用すると、端末を完全に制御し、画面上の任意の位置にシンボルを読み書きできます。ただし、そうする場合は、それを制御する責任があります。これには、テキストのスクロールが含まれます。また、自分で実装しない限り、端末を上にスクロールすることもできません。それに加えて、画面サイズに注意して変更を処理する必要があります。プログラムは、そのモードをサポートしていない端末でも起動できることに注意してください。
したがって、ユーザー入力を画面に保存するのではなく、プログラム内に保存できる場合は、いじらないでください。
これはかなり近いようです。
歴史 | テール -n 2