Ir para o conteúdo
ou

Software livre Brasil

 Voltar a Projeto Soft...
Tela cheia Sugerir um artigo

Francisco Fernandes: Dica: Entrada e saida em C++ via bash : cin e cout

3 de Abril de 2012, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 58 vezes
As vezes é preciso passar uma quantidade considerável de entradas para um  programa e as vezes é moroso passar por funções internas de leitura e escrita de arquivos. Em C++ por exemplo, tem-se a biblioteca <fstream> para lidar com leitura de streams de arquivos.

Para facilitar a escrita e leitura, o bash pode simplesmente passar e receber saidas através das funções cin e cout. Por exemplo, supondo alguns for's que possuem a seguinte estrutura de entrada e saida:

     cin >> instancias;

for(int i = 0; i < instancias; i++){
cin >> n_reunioes;

for(int j = 0; j < n_reunioes; j++){
cin >> start_t >> stop_t;
reuniao r (start_t, stop_t, j+1);
reunioes.push_back(r);
}

dias.push_back(reunioes_para_ir(reunioes));
reunioes.clear();
}

for ( int i = 0; i < instancias; i++ ) {
for ( int j = 0; j < dias[i].size(); j++ ) {
cout << dias[i][j] ;

if ( j != dias[i].size() - 1 )
cout<< " " ;
}
cout << endl;
}

Supondo um arquivo entrada.in, posso organizar minha entrada nele da seguinte forma:
103
3
08:15 08:45
08:00 08:30
08:30 09:00
5
11:00 12:00
12:20 13:15
10:10 12:15
12:30 13:00
10:30 12:16


e passa-lo com esses valores como argumento para a entrada e indicar um outro arquivo para a saída :
$./programa < entrada.in > saida.out
Com isso, o bash cuida de passar os valores no arquivo de entrada para cada pedido do cin e escrever a saida para o cout sem muito estresse. :)

Esta dica foi baseada neste post. La tem mais dicas, como por exemplo, utilizar o pipe ( | ) para passar entrada, já que o pipe é bem mais robusto que '<' ou '>'.
Fonte: http://pedepinico.blogspot.com/2012/04/dica-entrada-e-saida-em-c-via-bash-cin.html

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.