C ++变量/循环问题

时间:2015-09-18 16:37:17

标签: c++ loops variables

不知道问题出在哪里,所以我将插入整个子程序。 当你在猜测空间插入一个字符串时,它将无限循环,如果你插入一个数字,它将返回"离子你想要去?"(它甚至不会写在程序的任何地方)。

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!";
                }
            }
        }

    }


}


}

例程是缩进的,它只是没有粘贴

1 个答案:

答案 0 :(得分:2)

int guess;
string guess2;
guess2=guess;

这是你的问题。您不能以这种方式将int转换为字符串。你实际在做的是告诉计算机,guess2是一个字符串,从当前猜测值的内存地址开始。这就是为什么你得到一个甚至不在你的程序中的字符串输出的原因 - 这就是在那个地址发生的事情。

请参阅此处了解如何将int转换为字符串: Easiest way to convert int to string in C++

另外,请勿使用cin&gt;&gt;猜测。获取输入为字符串,然后检查它是否可以转换为整数。