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

时间:2016-03-20 23:21:14

标签: c++

我正在为学校创建一个刽子手游戏。 要猜的词是从数据文件中提取的, 程序从文件中选择最后一个单词作为用于游戏的单词, '也就是说'是我用于此的变量, 当游戏进行时,用户猜出一个字母,如果字母在单词中是正确的,如果不是,则它是不正确的,并且程序显示一个" 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)并且程序告诉我我,我错了。

我有什么不对?

2 个答案:

答案 0 :(得分:1)

std::basic_string::find又名。 std::string::find返回字符串中给定字符的位置,而不是bool

您发布的代码有时会有效,因为true会衰减到1,如果搜索到的字符位于第1位,则条件为真。

要修复它,你应该这样做:

...
if (words.find(guess)!=std::string::npos){
    ...

std::basic_string::find

答案 1 :(得分:1)

使用std::string::npos检查find结果。

 if( words.find(guess) != std::string::npos)
 {
    //...
 }
 else
{
}