Lendo Entrada na Execução

Galera, estou programando exercícios do URI em C++ e estou usando a linha de comando para compilar, executar e ler entrada para o programa.

Sei que no Linux para compilar se usa:

g++ -o prog prog.cpp

e para executar:

./prog

e para ler uma entrada de um txt se usa:

./prog < entrada.txt

Tenho algumas dúvidas, 3 pra ser mais específico:

  1. Gostaria de saber qual o nome desse tipo de execução por linha de comando ?
  2. Existe algum outro tipo execução por linha de comando que possa facilitar minha vida ?
  3. Qual é o correspondente desses comandos no Windows ?
  1. Input redirection.
  2. Eu não sei o que exatamente vc quer, então é difícil responder.
  3. Depende do shell.

./prog < entrada.txt

se adicionar > saida.txt, ficando:
./prog < entrada.txt > saida.txt

Aí prog vai ler as entradas de entrada.txt e botar as saídas no saida.txt. Muito prático!

Tem como fazer no Windows, mas não me recordo. Dps te passo o comando correspondente. Tô tendo aula aqui :sweat_smile:

Vou indo!

1 Curtida

Redirecionamento de entrada

Depende do que você quer fazer

Se for a mesma coisa, você pode usar:

./prog <<\EOF

teste usando um meio alternativo
de redirecionamento de entrada

EOF

Onde EOF é um texto de sua preferência (por convenção se usa EOF, vem de End Of File), assim que o texto tiver uma linha sendo esse texto, o bash (ou outro shell) para de ler

Também pode usar pipelines, é útil pra não precisar refazer funções de outros utilitários:

grep ^"Natanael" arquivo.txt | ./prog

Nesse caso apenas as linhas que começam com Natanael vão ser repassadas pro seu programa, se chama pipe

E ao invés de mandar o bash ler seu arquivo, você manda o seu programa:

./prog arquivo.txt

Do mesmo jeito

Se quiser que seja como se o usuário tivesse digitado, sim mas tem n outros jeitos de ler um txt

1 Curtida

era isso que eu estava procurando. Obrigado!!

Existe algum lugar onde eu posso achar referencias e exemplos de redirecionamento de entrada, como essas que vc me deu ?!

1 Curtida

Tem, basta pesquisar pelo nome, mas é basicamente isso que eu falei, não vai ter adições, o que vai ter a mais é redirecionamento de saída que não é o que você quer

de saida tambem ajuda

Só para deixar claro, vc não precisa criar o arquivo saida.txt, ele cria automaticamente. E também não precisa de .txt. Só abrir entrada com editor de texto, e dps rodar aquele comando:
./prog < entrada > saida

E abrir saida com editor de texto.

1 Curtida

Abre outro tópico, o assunto seria outro, aj facilitaria para outros usuários com a mesma dúvida ou que possuem o conhecimento encontrar seu post