Em vez abrir e fechar o arquivo manualmente, você pode apenas escrever assim:
std::ifstream arquivo("Palavras.txt");
desse modo já é aberto o arquivo, e além disso, ao final da função o arquivo será automaticamente fechado. o meu código ficou dessa forma:
std::vector<std::string> LerArquivo()
{
std::vector<std::string> returnVec;
std::ifstream arquivo("Palavras.txt");
//isso se estende para if(!arquivo.is_open()) exit(0);
check(arquivo.is_open())
//uint16_t é quase a mesma coisa que int
uint16_t NumeroPalavras;
arquivo >> NumeroPalavras;
//reserve reserva uma certo tamanho para adicionar palavras.
returnVec.reserve(NumeroPalavras);
for (size_t i = 0; i < NumeroPalavras; i++)
{
std::string palavra;
arquivo >> palavra;
//faz quase a mesma coisa que o push_back
//mas em algums casos ele é mais eficiente
returnVec.emplace_back(palavra);
}
return returnVec;
}