1

これは奇妙な質問だと思いますが、コンソールから以前の入力を読み取る方法はありますか?

何かのようなもの:

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を使用しています

4

3 に答える 3

5

前の入力を読むことによって、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';
}
于 2016-09-30T19:02:30.743 に答える
1

これはいくつかの仮定の下で行うことができますが、厳しすぎると感じるかもしれないいくつかの制限があります。ですから、そうしない方法を見つける方が良いでしょう。

ncursesライブラリを使用すると、端末を完全に制御し、画面上の任意の位置にシンボルを読み書きできます。ただし、そうする場合は、それを制御する責任があります。これには、テキストのスクロールが含まれます。また、自分で実装しない限り、端末を上にスクロールすることもできません。それに加えて、画面サイズに注意して変更を処理する必要があります。プログラムは、そのモードをサポートしていない端末でも起動できることに注意してください。

したがって、ユーザー入力を画面に保存するのではなく、プログラム内に保存できる場合は、いじらないでください。

于 2016-09-30T18:31:10.560 に答える
0

これはかなり近いようです。

歴史 | テール -n 2

于 2016-09-30T18:24:18.013 に答える