提问者:小点点

为什么当用户输入不正确的小写字母时代码不循环


我正在编写一个代码,生成一个随机数,然后将这个数字分配给字符串字母中的一个字母,然后用户必须猜测该字母。

我正在尝试循环问题“Enter one lowercase letter”:如果用户输入的字母与randomletter不匹配,但同时我必须确保该字母都是小写的(这是我们在课堂上没有学到的,但经过搜索我找到了一个解决方案,希望这是正确的方法)。

如果用户输入不正确的低字母,则while循环结束。当letterguessrandomletter匹配时,它确实起作用。

我要做的另一件事是,如果用户输入了一个不正确的低字母,那么它需要给出反馈,正确的字母在输入的字母之前或之后。

#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <algorithm>

using namespace std;

//function prototype
void displayNumber(int);

int main()
{
    string letters = "abcdefghijklmnopqrstuvwxyz";
    string randomLetter;
    string letterGuess = "";
    string wordLocation = " ";
    int randomNumber = 0;

    //display random number then assign a random number to letter string
    displayNumber(randomNumber);
    randomLetter = letters[randomNumber];

    while (letterGuess.length() != 1) {
        //ask user to enter a lowercase letter and determine if it matches the random letter
        cout << "Enter one lowercase letter: ";
        getline(cin, letterGuess);

        if (all_of(letterGuess.begin(), letterGuess.end(), &::isupper)) {
            cout << "letter must be lowercase.";
        }
        else if (randomLetter.find(letterGuess, 0) == -1) {
            cout << "\nYou guessed the correct letter.";
        }
        else {
            wordLocation.insert(0, letters);
        } //end if
    } //end while
    return 0;
} //end of main function

void displayNumber(int num)
{
    srand(time(0));
    num = (rand() % 26) + 1;
    cout << num << endl
         << endl;
} // end of displayNumber function

共1个答案

匿名用户

你的问题就在这里:

while (letterGuess.length() != 1)

由于字符串lettergues=“”;的大小/长度为0。