如何摆脱我的do/while循环?

6 c++ do-while

void GasPump::dispense()
{

        bool cont = true;
        char stop;

    do{
        cout << "Press any key, or enter to dispense.\n"
             << "Or press 0 to stop: \n";
        cin.get(stop);

        gasDispensed = gasDispensed + gasDispensedPerCycle;
        charges = costPerGallon*gasDispensed;
        displayGasNCharges();

        if(stop == 0)
            cont = false;

    } while(cont);

}
Run Code Online (Sandbox Code Playgroud)

做一个作业,这是我第一个用对象写的程序,所以请耐心等待.我只是无法得到这个代码的输出结果是正确的.我需要一种摆脱循环的方法,而我正在使用的是不起作用.有什么建议,提示或提示吗?

Cha*_*ion 5

尝试将stop与零char进行比较.

stop == '0'
Run Code Online (Sandbox Code Playgroud)

此外,您可以通过执行此操作来简化代码.

void GasPump::dispense()
{
    char stop;

    do {
        cout << "Press any key, or enter to dispense.\n"
             << "Or press 0 to stop: \n";
        cin.get(stop);

        gasDispensed = gasDispensed + gasDispensedPerCycle;
        charges = costPerGallon*gasDispensed;
        displayGasNCharges();
    } while (stop != '0');
}
Run Code Online (Sandbox Code Playgroud)

  • @ blakejc70因为stop是一个char并且用C++方法重载你对cin.get的调用被路由到一个输入处理逻辑,它将返回一个字符代码.所以停止=='0'== 48(假设ASCII字符集). (2认同)