C++ 如何处理输入多行整数的问题

比如要求输入

1 2 -1
2 3 4 5 6
2 4 5

可能有无限行输入, 并且每一行输入的整数的数量不一, 我需要将每一行的整数存入一个数组, 但问题在于如果我使用std::cin >> x的话, 我不知道如何判断换行是否已经发生并且我也不知道如何判断输入已经结束了, 望解答.

阅读 17.3k
3 个回答
#include <sstream>
#include <string>
#include <vector>

std::string line, num;
std::vector<std::vector<int>> v;
size_t linenum = 0;
while (getline(cin, line)) {
    std::istringstream iss(line);
    while (line >> num) {
        v.push_back(vector<int>());
        v[linenum].push_back(stoi(num));
    }
    ++linenum;
}

我刚看完C++ primer,大概是这样的做法吧。

你这个是做OJ上的题吧,如果是OJ的话,其实要求输入和你理解的并不一样, 可以参考一下这个

http://blog.csdn.net/sxheliji...

新手上路,请多包涵

也可以用getchar()判断一下回车符号,大体如下:

#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
    while(true)
    {
        int n,num[100];
        int flag = 0;
        while(cin>>n)
        {
            num[flag++] = n;
            if(getchar()=='\n')
                break;
        }
        for(int i=0;i<flag;i++)
        {
            cout<<num[i]<<" ";
        }
    }
    return 0;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏