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

Na hora de ler o arquivo devolve valor errado (fstream)

Estou seguindo a aula, porém ao fazer o mesmo que o professor, utilizando o fstream, ao invés de retornar 5, como a quantidade de palavras no arquivo, ele me retorna um valor muito alto. retorno : 18643832.

OBS: Estou seguindo o curso utilizando o CLion, então no caso foi criado um projeto pelo CLion. Não sei se isso está interferindo no fstream na hora de ler o arquivo.

Link para o repositório do projeto

Código:

void ReadFile(){
    ifstream file;
    file.open("words.txt");

    int words_total;
    file >> words_total;

    cout << "O arquvio possui: " << words_total << " Palavras \n";

//    for (int i = 0; i < words_total; ++i) {
//        string word;
//        file >> word;
//        cout << word << endl;
//    }
}
estrutura do projeto: 
IntrouductionAndSTL
->cmake-build-debug
->CmakeLists.txt
->main.cpp
->words.txt
3 respostas
solução!

O uso do IDE Clion não influencia, tanto que segui pelo Visual Studio (não Visual Studio Code) e ainda usando as ferramentas de C++ dele mesmo, e não mingw ou mingw-make e consegui rodar todos os exercícios.

Como o arquivo main.cpp e words.txt estão no mesmo nível eu recomendo, nesse caso verificar se ele está lendo o arquivo corretamente.

void ReadFile(){
    ifstream file;
    int words_total;

    file.open("words.txt");

    if (file.is_open()) {
        file >> words_total;
        cout << "O arquivo possui: " << words_total << " Palavras \n";
    } else {
        cout << "Não foi possível acessar o banco de palavras" << endl;
    exit(0);
    }
    file.close();
}

Uma outra dica é você usar o debugger do Clion para ver o que está acontecendo de fato durante a execução do código.

Beleza! Valeu Augusto!

Descobri de fato qual o problema, durante o curso seguinte da formação de C++, o instrutor comenta sobre ao compilar o arquivo, .exe não conseguir ler o arquivo por não estar no mesmo diretório, com isso, adicionei o list_words.txt a mesma pasta onde fica salvo o .exe ao fazer a build, com isso consegui resolver o problema.