Olá! bom dia, boa noite ou boa madrugada pra você que também tem insonia. Fico feliz que tenha considerado ler meu post no fórum.
Estou seguindo a aula "Lendo um arquivo de texto" deste curso de C++, porém ao invés de fazer um arquivo .txt contendo frutas, decidi fazer contendo filmes de ficção que eu gosto. O problema é que ao rodar o código, não consigo imprimir mais de uma palavra por vez no terminal.
Como assim?
Bem, estas são as palavras que estão no meu arquivo .txt
Porém para os filmes que possuem mais de uma palavra na mesma linha, só é mostrado a primeira palavra na hora de imprimir no terminal.
Pesquisei e encontrei a função chamada "getline" que teoricamente resolveria meu problema, mas o comportamento permanece o mesmo.
Segue o código da minha função:
//funcao para ler arquivo de texto
void le_arquivo(){
ifstream arquivo; //input file stream
arquivo.open("palavras.txt");
int qtd_palavras;
arquivo >> qtd_palavras;
cout << "O arquivo possui " << qtd_palavras << " palavras." << endl;
for(int i=0;i<qtd_palavras;i++){
string palavra_lida;
getline(arquivo, palavra_lida);
arquivo >> palavra_lida;
cout << "Na linha " << i << " : " << palavra_lida << endl;
}
}
Por que isso acontece? E como corrigir para que a função leia e imprima os nomes dos filmes inteiros? Desde já, agradeço.