Bash - リダイレクトされた文字列が出力に表示されない

Bash - リダイレクトされた文字列が出力に表示されない

私はC ++プログラム(+ 100プログラム)のコンパイルと実行を自動化していますが、その中にはユーザー対話が必要です。

以下は、ユーザーが文字列を挿入する必要があるC ++プログラムの例です。

#include <iostream>
#include <string>
using namespace std;

int main ()
{
    string name;

    cout << "Enter your name: ";
    cin >> name;

    cout << "your name is: " << name << endl;

    return 0;
}

ここで必要なのは、それをコンパイルして実行し、プログラムの出力を別のファイルにリダイレクトすることです。

g++ -std=c++11 -o practice practice.cpp

入力挿入を自動化するには、次のようにプログラムを実行します。

./practice <<< $(echo "Brian") >> result.txt

文字列をプログラムのSTDINにリダイレクトする方法があることを知っています。

echo "Brian" | ./practice >> result.txt

ただし、すべて次のような出力を生成します。

Enter your name: your name is: Brian

私が望むのは、次の出力を見ることです。

Enter your name: Brian
your name is: Brian

行プログラムがユーザーの対話を要求した直後に、リダイレクトされた文字列がファイル出力に表示されるようにします。
どんな提案がありますか?

答え1

これをやってみますか?

cout << "Enter your name: ";
cin >> name;
cout << name << endl;

cout << "your name is: " << name << endl;

コンパイル後の様子は次のとおりです。

$ echo "foo" | ./a.out 
Enter your name: foo
your name is: foo

メモ:
私は長い間C ++を使用していません!

関連情報