使用 str.find() 查看单词中是否有特定字母



我正在为学校创建一个刽子手游戏。要猜测的单词是从数据文件中提取的,程序从文件中选择最后一个单词作为要用于游戏的单词,"单词"是我为此使用的变量,随着游戏的进行,用户猜出一个字母,如果字母在单词中,则是正确的,如果不是,则不正确,程序会逐渐显示刽子手的"板"或图片。

我用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
{
}

相关内容

  • 没有找到相关文章

最新更新