Stringstream to vector <int>

Jea*_*Luc 4 c++ stringstream visual-studio-2010 lexical-cast

我想知道什么是最好的方法,从一个写std::stringstreamvector<int>.

以下是以下内容的示例stringstream: "31 #00 532 53 803 33 534 23 37"

这是我得到的:

int buffer = 0;
vector<int> analogueReadings;
stringstream output;

 while(output >> buffer)
     analogueReadings.push_back(buffer);
Run Code Online (Sandbox Code Playgroud)

然而,似乎发生了什么,它首先读取,然后它到达#00并返回,0因为它不是一个数字.

理想情况下,我想要的是,它到达a #然后只是跳过所有字符直到下一个空格.这可能是旗帜或其他什么?

谢谢.

And*_*ron 5

#include <iostream>
#include <sstream>
#include <vector>

int main ( int, char ** )
{
    std::istringstream reader("31 #00 532 53 803 33 534 23 37");
    std::vector<int> numbers;
    do
    {
        // read as many numbers as possible.
        for (int number; reader >> number;) {
            numbers.push_back(number);
        }
        // consume and discard token from stream.
        if (reader.fail())
        {
            reader.clear();
            std::string token;
            reader >> token;
        }
    }
    while (!reader.eof());

    for (std::size_t i=0; i < numbers.size(); ++i) {
        std::cout << numbers[i] << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)