首页 > 解决方案 > 如何用 bool 打破 while 循环?

问题描述

我试图让用户键入数据并将它们存储在向量中,因此当输入 -1 时,它将打破整个循环并开始显示向量。但是,即使输入了-1,它当前也无法正常工作,循环仍将继续进行。

void cargo::addCargo(vector<cargo> &userCargo)
{
    fstream file;
    file.open("cargo.txt", ios::out | ios::app);
    int i = 0;
    bool checker = true;
    cargo newCargo;
    while (checker == true)
    {
        
        cout << "Enter id" << endl;

        if (cin.peek() == '-1')
        {

            checker = false;
            cout << "Hello";

        
        }
        else
        {
            cin >> idCon;
            newCargo.setId(idCon);
        }
        
        cout << "Enter Destination Country" << endl;
        if (cin.peek() == '-1')
        {
            checker = false;
            
        }
        else
        {
            cin >> destCountryCon;
            newCargo.setDestCountry(destCountryCon);
        }
        
        cout << "Enter Time" << endl;
        if (cin.peek() == '-1')
        {
            checker = false;
        }
        else
        {
            cin >> timeCon;
            newCargo.setTime(timeCon);
            newCargo.setIndex(i + 1);
            userCargo.push_back(newCargo);
        }
    
        cout << endl;
        i++;
        
    }

    //loop to display the entire vector
    displayCargo(userCargo);
}

标签: c++

解决方案


您的代码不是独立的,所以我无法为您修复它。务实的答案是breakcontinue带有类似的标志checkerpeek()查看下一个字符,当用户输入“-1”时,它将返回“-”而不是多字符常量“-1”。或者,用户可以按下ctrl-d触发 eof。如果你想使用“-1”(谁想出了那个糟糕的用户体验?),把它读成字符串或整数。


推荐阅读