读取未知数量的输入

时间:2012-10-04 04:06:48

标签: java c++ input

我需要使用C ++或Java读取未知数量的输入。输入每行只有两个数字。我需要使用cinSystem.in Scanner,因为输入来自控制台,而不是来自文件。

示例输入:

1 2

3 4

7 8

100 200

121 10

我想将值存储在矢量中。我不知道我有多少对数字。如何设计while循环来读取数字,以便将它们放入向量中?

5 个答案:

答案 0 :(得分:6)

您可以在C ++中使用惯用的std::copy :( see it work here with virtualized input strings

std::vector<int> vec;
std::copy (
    std::istream_iterator<int>(std::cin), 
    std::istream_iterator<int>(), 
    std::back_inserter(vec)
);

这样,每次从输入流读取整数时它都会附加到向量上,直到它读取失败,无论是输入错误还是EOF。

答案 1 :(得分:4)

Java:

Scanner sc = new Scanner(System.in);
String inputLine;
while(sc.hasNextLine()) {
  inputLine = sc.nextLine();
  //parse inputLine however you want, and add to your vector
}

答案 2 :(得分:1)

除了使用缓冲读取器之外,还可以按照以下方式使用Scanner来完成

import java.util.*;

公共类解决方案{

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    while(true)
    {
        String Line = new String(scan.nextLine());
        if(Line.length()==0)
        {
            break;
        }
    }
}

}

答案 3 :(得分:0)

我发现只有解决方法:

pandas Dataframe

答案 4 :(得分:0)

对于那些寻求更精致的C ++代码的人:

    #include<iostream>
    #include<vector>
    int main(){
        std::vector<int>inputs;  //any container
        for(int i;std::cin>>i;)  //here the magic happens
            inputs.push_back(i); //press Ctrl+D to break the loop
        for(int num:inputs)      //optional 
            std::cout<<num<<endl;
    }