我正在为学校创建一个刽子手游戏。要猜测的单词是从数据文件中提取的,程序从文件中选择最后一个单词作为要用于游戏的单词,"单词"是我为此使用的变量,随着游戏的进行,用户猜出一个字母,如果字母在单词中,则是正确的,如果不是,则不正确,程序会逐渐显示刽子手的"板"或图片。
我用str.find()
看猜到的字母是否在单词中,代码如下:
while (wrongGuess < 7){
cout << "nGuess a letter in the word: " << endl;
cin >> guess;
if (words.find(guess)==true){
cout << "Correct! " << guess << " is FOUND in the word " << word << endl;
continue;}
else
{cout << guess << " is NOT FOUND in the word " << endl;
wrongGuess++;
if(wrongGuess == 1)
cout << board2;
else if(wrongGuess == 2)
cout << board3;
else if(wrongGuess == 3)
cout << board4;
else if(wrongGuess == 4)
cout << board5;
else if(wrongGuess == 5)
cout << board6;
else if(wrongGuess == 6)
cout << board7 << "nSorry Game Over";
}
使用的单词是 programming
.
我的问题是有时当我输入正确的字母(如r
)时,它告诉我我是对的,其他时候我输入不同的正确字母(p
),程序告诉我我错了。
我有什么错?
std::basic_string::find
又名。 std::string::find
返回给定字符在字符串中的位置,而不是bool
。
您发布的代码有时会起作用,因为true
衰减到1
,如果搜索的字符位于位置 1,则条件为 true。
要修复它,您应该这样做:
...
if (words.find(guess)!=std::string::npos){
...
标准::basic_string::查找
使用 std::string::npos
检查find
结果。
if( words.find(guess) != std::string::npos)
{
//...
}
else
{
}