向向量添加元素,直到用户不再需要为止?

时间:2014-03-21 18:11:07

标签: c++ stdvector

 int userInput = 0;
        vector<int> userVector;
        cout << "Input the numbers you would like in the vector. " << endl;
        bool flag = true

        while (flag == true)
        {
            cin >> userInput;
        }

我希望程序要做的是,用户在向量中输入数字,直到它们满足它为止。我认为停止循环的条件可能是键入任何字符/字符串,但为了简化矢量,也许它可能是“不”,“退出”或“只是”。我也不确定如何将userInput集成到向量中。

2 个答案:

答案 0 :(得分:2)

为此目的发明了EOF。它发生在用户键入Ctrl + D(Linux)或Ctrl + Z(Windows)时,或者如果输入是从文件提供的话,则到达文件的末尾。没有必要弥补一些哨兵价值。

while (cin >> userInput) {
   // ...
}

当输入结束或提取失败时,此循环将停止。

答案 1 :(得分:2)

我尝试了一种不同的方法,并以字符串形式输入。它允许更强大的错误处理,以及允许终止输入值。

std::string userInput;
std::vector<int> userVector;
std::cout << "Input the numbers you would like in the vector (Q to quit). " << std::endl;

while (getline(cin, userInput))
{
    // Ignore blank lines
    if (userInput.empty())
        continue;

    if (userInput[0] == 'Q' || userInput[0] == 'q')
        break;

    try
    {
        userVector.push_back(stoi(userInput));
    }
    catch (const std::invalid_argument&)
    {
        std::cout << "That's not a valid number!" << std::endl;
    }
}