不知道问题出在哪里,所以我将插入整个子程序。 当你在猜测空间插入一个字符串时,它将无限循环,如果你插入一个数字,它将返回"离子你想要去?"(它甚至不会写在程序的任何地方)。
void guess(){
int guess;
string guess2;
string guess_status="";
bool win;
int attempts;
int counter;
int num;
while (guess2 != "exit"){
num=rand() %100 + 1;
win=0;
counter=0;
while (win != 1){
attempts=5-counter;
cout << "Guess a number Attempts Left: " << attempts << endl;
cout << "between 1 and 100 ============================\n The Guesing Game\n ============================" << endl;
cout << "\n" << guess_status << endl;
cout << "\nGuess: ";
cin >> guess;
system("cls");
if (!cin) {
guess2=guess;
if (guess2 != "exit"){
guess_status="Please insert a valid number, restarted game.";
win=1;
}
}
if (cin){
if (guess==num){
win=1;
guess_status="Correct! Generated new number.";
}
if (guess != num){
if (guess < num){
guess_status=num +"was too low!";
}
if (guess > num){
guess_status=num +"was too high!";
}
}
}
}
}
}
例程是缩进的,它只是没有粘贴
答案 0 :(得分:2)
int guess;
string guess2;
guess2=guess;
这是你的问题。您不能以这种方式将int转换为字符串。你实际在做的是告诉计算机,guess2是一个字符串,从当前猜测值的内存地址开始。这就是为什么你得到一个甚至不在你的程序中的字符串输出的原因 - 这就是在那个地址发生的事情。
请参阅此处了解如何将int转换为字符串: Easiest way to convert int to string in C++
另外,请勿使用cin&gt;&gt;猜测。获取输入为字符串,然后检查它是否可以转换为整数。