我目前正在制作一款快速的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;
}
}