我正在为学校创建一个刽子手游戏。 要猜的词是从数据文件中提取的, 程序从文件中选择最后一个单词作为用于游戏的单词, '也就是说'是我用于此的变量, 当游戏进行时,用户猜出一个字母,如果字母在单词中是正确的,如果不是,则它是不正确的,并且程序显示一个" board"或者是刽子手的照片。
我用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
)并且程序告诉我我,我错了。
我有什么不对?
答案 0 :(得分:1)
std::basic_string::find
又名。 std::string::find
返回字符串中给定字符的位置,而不是bool
。
您发布的代码有时会有效,因为true
会衰减到1
,如果搜索到的字符位于第1位,则条件为真。
要修复它,你应该这样做:
...
if (words.find(guess)!=std::string::npos){
...
答案 1 :(得分:1)
使用std::string::npos
检查find
结果。
if( words.find(guess) != std::string::npos)
{
//...
}
else
{
}