c ++从控制台读取整数数组

时间:2017-05-27 20:49:19

标签: c++ input console

所以当我从控制台读取一些数字时,我一直试图摆脱无限循环。这是阅读部分代码:

vector<int> all;
string input;
while (getline(cin, input)) {
    int number;
    stringstream ss(input);
    while (ss >> number) {
        all.push_back(number);
    }
}

我也尝试了这个:

vector<int> all;
while (cin >> number) {
    all.push_back(number);
}

1 个答案:

答案 0 :(得分:-1)

解决此问题的一种快速方法是在从控制台输入空行时中断外部循环:

while (getline(cin, input))
{
   if (input == "")
       break;
    ...
}

注意:某些实现会在getline的行尾返回一个回车符,它只会对新行(换行符)进行条带化处理 http://www.cplusplus.com/reference/string/string/getline/

如上所述,这是一种非常简单快捷的退出无限循环的方法,从用户的角度来看,他/她可以输入以空格,制表符,输入或任何组合分隔的数字以及 vector ,直到用户输入空行。

您的代码将如下所示:

#include <string>
#include <vector>
#include <iostream>
#include <sstream>

using namespace std;

int main()
{
    vector<int> all;
    string input;
    while (getline(cin, input)) {
        if (input == "")
            break;
        int number;
        stringstream ss(input);
        while (ss >> number) {
            all.push_back(number);
        }
    }
    // Here the vector "all" has any numbers entered by user
    return 0;
}