我目前正在制作一款快速的Hangman游戏,正在努力从单词中提取正确猜出的字母,然后将其插入字符串中,以便在用户玩游戏时向他们展示。到目前为止,这是我的代码:

std::string word_to_guess = "ataamataesaa";
    std::string word_to_fill(word_to_guess.length(), '-');
    char user_guess = 'a';

    for (auto &character : word_to_guess) {
        if (character == user_guess) {
            std::size_t index = word_to_guess.find(&character);
            word_to_fill[index] = user_guess;
        }
    }

    std::cout << word_to_fill;

这几乎可行,但是它忽略了字符串的最后两个As,以至于我无法理解。

最佳答案

“查找”将仅返回第一个匹配项。

除了遍历字符外,还可以遍历word_to_guess和word_to_fill的索引。

for (int i = 0 ; i < word_to_fill.length ; ++i) {
    if (word_to_guess[i] == user_guess) {
        word_to_fill[i] = user_guess;
    }
}

10-07 19:52
查看更多