我正在编写一个代码,生成一个随机数,然后将这个数字分配给字符串字母中的一个字母,然后用户必须猜测该字母。
我正在尝试循环问题“Enter one lowercase letter”:如果用户输入的字母与randomletter
不匹配,但同时我必须确保该字母都是小写的(这是我们在课堂上没有学到的,但经过搜索我找到了一个解决方案,希望这是正确的方法)。
如果用户输入不正确的低字母,则while
循环结束。当letterguess
与randomletter
匹配时,它确实起作用。
我要做的另一件事是,如果用户输入了一个不正确的低字母,那么它需要给出反馈,正确的字母在输入的字母之前或之后。
#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
你的问题就在这里:
while (letterGuess.length() != 1)
由于字符串lettergues=“”;
的大小/长度为0。