Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Como ler mais de uma palavra na mesma linha no arquivo .txt?

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

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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.

2 respostas
solução!

Remova esta linha

arquivo >> palavra_lida;

Luis Dias, muito obrigado! No final a resolução era super simples, acabei não percebendo.