hi, so i'm currently reading Beginning c++ through game programming, at the end of chap.4, he writes a HangMan game, now there's something really annoying me and i really appreciate it if someone could explain it to me. the underlined code is what i don't understand, wtf is that 'used' thingy, he did string used = ""; wtf does it even mean!? there's nothing inside of it, empty! and he did used.find(guess) != string::npos, really confusing me, please someone explain, i would really really appreciate it, npos means a letter that can't exist right?
find is a function for strings (the type of variable used is). It returns the position in the string where the character you're searching is. If it returns string::npos, then the character isn't contained in the string.If the guess is already in used, then that means that letter has already been guessed before.
used += guess;
This just adds the guess to the string.
1 2 3 4 5 6 7 8 9 10 11 12 13
if (THE_WORD.find(guess) != string::npos)
{
cout << "That's right! " << guess << " is in the word.\n";
// update soFar to include newly guessed letter
for (unsignedint i = 0; i < THE_WORD.length(); ++i)
{
if (THE_WORD[i] == guess)
{
soFar[i] = guess;
}
}
}
If find doesn't return string::npos, then the guess is somewhere in the word. The for loop just searches for that characters position in THE_WORD and then puts it in that same position in soFar.
Tell me if I wasn't clear enough on any of this. Hope it helped.
...As a return value, it is usually used to indicate no matches.
string used = "";
This is used to keep track of the letters that have already been guessed. The std::string.find method returns the position the substring is located in the string otherwise it returns npos
lines 42 to 48 will loop until you enter a guess that is not already in the used string which is why right after line 48 the next line of code appends the character to the string
Remember that initially this used string has to be empty because you have not made any guesses