【问题标题】:Keep reading numbers until an empty input继续阅读数字,直到输入为空
【发布时间】:2014-08-27 08:56:07
【问题描述】:

我想制作一个程序,它会一直读取数字,直到输入为空。 我的意思是:

12 <ENTER> 
24 <ENTER> 
<ENTER> 
Sum of these numbers is: 36

到目前为止,我得到了这个:

#include<iostream>

using namespace std;

long double sum = 0, num = 0;
string junk;

int main(){
    cout << "Witaj w programie do liczenia sredniej!\n\n";
    while (true){
        while (cin >> num){ //stops when you input a char
            sum += num;
        }
        cin.clear();
        getline(cin, junk);
        cout << "\nSuma tych liczb to: " << sum << "\n\n";
    }
    return 0;
}

它是这样工作的:

12<ENTER>
24<ENTER>
q<ENTER>
Sum of these numbers is: 36

如果有什么不清楚的地方请告诉我,我会努力改进。 任何帮助表示赞赏:)

【问题讨论】:

  • 看看这里:How to test whether stringstream operator>> has parsed a bad type and skip it。这也可能有助于解决您的问题。请注意,ENTER ('\n') 实际上会被 cin &gt;&gt; ... 忽略,除非您更改标准分隔符。
  • 我知道它被忽略了,我也知道你可以使用“noskipws”来更改它,但我认为如果没有输入任何内容,它可以识别出来

标签: c++


【解决方案1】:

在您的代码中,我看不到换行符的检查。查看我的代码,它似乎工作正常。也许这是您正在寻找的解决方案。

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

using namespace std;

int main()
{
    int sum = 0;
    string line;

    while (getline(cin, line))
    {
        stringstream ss(line);
        int tmp;

        if (ss >> tmp)
        {
            sum += tmp;
        }
        else
        {
            break;
        }
    }

    cout << "\nSuma tych liczb to: " << sum << "\n\n";

    return 0;
}

【讨论】:

  • 这正是我想要的!非常感谢达科恩。我不能投票 - 需要 15 声望 :(
猜你喜欢
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多