Oi Vinicius,
O problema está na forma como o programa está buscando o arquivo "palavras.txt". Quando você usa arquivo.open("palavras.txt")
, o programa procura o arquivo no diretório de execução, que nem sempre é o mesmo onde o código fonte está.
Para resolver isso, você pode fazer o seguinte:
- Verifique o diretório de execução: Certifique-se de que o arquivo "palavras.txt" está no mesmo diretório onde o executável do seu programa está sendo gerado. Normalmente, o executável fica dentro de uma pasta "Debug" ou "Release" dentro da pasta do seu projeto.
- Use um caminho relativo: Em vez de apenas "palavras.txt", você pode usar um caminho relativo a partir do diretório do seu projeto. Por exemplo, se o arquivo "palavras.txt" estiver na mesma pasta do seu arquivo
.cpp
, você pode usar "./palavras.txt"
ou "palavras.txt"
. Se estiver em uma subpasta, use "subpasta/palavras.txt"
. - Use um caminho absoluto: Se você quiser ter certeza de que o arquivo será encontrado, pode usar um caminho absoluto, como
"C:/Users/seu_usuario/seu_projeto/palavras.txt"
. No entanto, essa abordagem torna seu código menos portátil, pois o caminho pode variar em diferentes máquinas.
Exemplo prático:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
std::vector<std::string> le_arquivo() {
std::ifstream arquivo;
arquivo.open("./palavras.txt"); // Usando caminho relativo
if (arquivo.is_open()) {
int quantidade_palavras;
arquivo >> quantidade_palavras;
std::vector<std::string> palavras_do_arquivo;
for (int i = 0; i < quantidade_palavras; i++) {
std::string palavra_lida;
arquivo >> palavra_lida;
palavras_do_arquivo.push_back(palavra_lida);
}
arquivo.close();
return palavras_do_arquivo;
} else {
std::cout << "Não foi possível acessar o banco de palavras." << std::endl;
exit(0);
}
}
Para saber mais: Trabalhando com arquivos em C++ 💪
Continue praticando e explorando as possibilidades da linguagem! 💻 🤔