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

Erro de runtime quando uso const no Map chutou em imprime_palavra.

Olá.

Quando fui alterar a função imprime_palavra para utilizar o modificador const do parâmetro chutou eu tive um problema de runtime.

void imprime_palavra(std::string& palavra_secreta, 
                        const std::map<char, bool>& chutou)
{
    for (char letra : palavra_secreta)
    {
        if (chutou.find(letra) == chutou.end() || chutou.at(letra))
        {
            std::cout << letra << " ";
        }
        else
        {
        std::cout << "_ ";
        }
    }
    std::cout << std::endl;
} 

Porém quando inverto a lógica do IF o código passa a funcionar.

void imprime_palavra(std::string& palavra_secreta, const std::map<char, bool>& chutou)
{
    for (char letra : palavra_secreta)
    {
        if (chutou.find(letra) == chutou.end() || !chutou.at(letra))
        {
            std::cout << "_ ";
        }
        else
        {
            std::cout << letra << " ";
        }
    }
    std::cout << std::endl;
}

Por algum motivo estranho não consigo ler o arquivo palavras.txt em modo debug no windows, com o visual studio, então não consigo saber qual é o erro de runtime.

Por que a lógica não funciona bem quando uso o primeiro código? E como resolvo o problema de leitura do arquivo?

2 respostas
solução!

Silvio, talvez o arquivo palavras.txt esteja na pasta da solução do Visual Studio e não na do projeto, não?

Sim ,era isso, valeu!