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++了!

相关内容