Bash - string redirecionada não mostrando na saída

1

Estou automatizando a compilação e a execução de programas C ++ (+100 programas), que alguns deles exigem interação com o usuário.

Aqui está uma amostra do programa C ++ que requer que o usuário insira uma string:

#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;
}

Aqui, o que eu preciso é compilá-lo, executá-lo e redirecionar a saída do programa para outro arquivo:

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

Para automatizar a inserção de entrada, executo o programa da seguinte forma:

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

Eu sei que existem diferentes maneiras de redirecionar uma string para o STDIN do programa como

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

Mas todos eles geram a seguinte saída:

Enter your name: your name is: Brian

O que eu quero é ver abaixo a saída:

Enter your name: Brian
your name is: Brian

Eu quero que a string redirecionada apareça na saída do arquivo, logo após o programa de linha requerer interação com o usuário.
Alguma sugestão?

    
por Brian SP2 07.09.2018 / 15:59

1 resposta

3

Tente assim?

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

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

Veja como fica o meu final depois de compilar:

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

Nota:
Não usei C ++ em idades!

    
por 07.09.2018 / 16:03