【问题标题】:How to read inputs which is on unknown count of lines(empty line is allowed) from c++ console如何从 C++ 控制台读取行数未知的输入(允许空行)
【发布时间】:2018-06-02 03:40:46
【问题描述】:

我在http://www.spoj.com/problems/RETO7/做一个练习,但是我在阅读输入时卡住了,输入行的数量是未知的,每行有两个数字,还有空行,有没有人知道解决方法这个问题。输入被粘贴到控制台。

我上面提到的网页为我们提供了一台运行代码的机器(对于页面上也列出的任何问题)。我们可以通过标准输入标准输出与它的输入文件进行通信。例如,对于添加两个整数的练习,输入包含遵循规则的行,第一行是要计算的 int 对的数量,称为 n,接下来的 n 行每行有两个整数。输出是 n 行,每行包含上述整数对的总和。解决这个问题,下面的代码就可以了

#include <iostream>
using namespace std;

int main()
{
    int n,i,a,b;
    cin>>n;
    for(i=0;i<n;i++)
    {
        cin>>a>>b;
        cout<<a+b<<endl;
    }
    //fflush(stdin);
    //getchar();
}

但是现在输入规则改变了,第一行没有要计算的总和数,所以我不知道要调用多少“cin”。我正在寻找一种读取所有输入的解决方案,我只希望它只计算我粘贴到控制台的输入,之后不再输入。我为上面的代码粘贴的输入是

7
1 2
3 4
5 6
7 8
9 10
23 34
56 67

结果

3
7
11
15
19
57
123

ps:我真的不知道输入是否可能包含空行,但在他们提供的示例中确实如此 感谢阅读!

【问题讨论】:

标签: c++ console cin getline


【解决方案1】:

我太笨了,终于找到解决办法了

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string str;
    int a,b;
    do
    {
        getline(cin,str);
        if(str!="")
        {
            stringstream ss(str);
            ss>>a>>b;
            //do something
        }
    }
    while(str!="");
    fflush(stdin);
    getchar();
}

【讨论】:

    猜你喜欢
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多