在字符串行c ++找到数字

时间:2016-06-01 17:45:55

标签: c++ string line

#include<striang>
#include<iostream>
#include<sstream>
#include<stdlib.h>
using namespace std;
int main()
{
    string line;
    cin>>line;
    istringstream iss(line);
    int i, count, numbers[100];
    count = 0;
    do
    {
        string sub;
        iss >> sub;

        numbers[count] = atoi(sub.c_str());
        count++;

    } while (iss);

    cout<<"Numbers"<<endl;

    for (i=0; i<count;i++)
      cout<<numbers[i]<<endl;

}

输入

 1                   2      3  -4   8

我需要输出

 1 2 3 -4 8

1 个答案:

答案 0 :(得分:0)

正如@Jhonny Mopp's comment中提到的,主要问题是,你没有在这里阅读整行:

cin>>line;

它只是读取下一个空白分隔符。

你真正想要的是:

getline(cin, line);

这将读入整个输入,直到你点击 Enter

关于剩余的处理,请参考以前标记为重复的Q&amp; A I:

How to test whether stringstream operator>> has parsed a bad type and skip it