C ++如何从字符串流中取出值并将它们放入向量中,以便我可以单独访问它们?

时间:2014-09-11 20:10:13

标签: c++ vector stringstream

我在字符串流中有值,用空格分隔,我想将这些值拉出来并将它们放入向量中。

1 个答案:

答案 0 :(得分:4)

std::string s( "1 2 3 4 5 6 7 8 9 10" );
std::istringstream is( s );

std::vector<int> v( ( std::istream_iterator<int>( is ) ), std::istream_iterator<int>() );

这是一个例子

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <iterator>


int main() 
{
    std::string s( "1  2 3 4 5 6 7 8 9 10" );
    std::istringstream is( s );

    std::vector<int> v( ( std::istream_iterator<int>( is ) ), 
                        std::istream_iterator<int>() );

    for ( int x : v ) std::cout << x << ' ';
    std::cout << std::endl;

    return 0;
}

输出

1 2 3 4 5 6 7 8 9 10 

如果已定义向量,则可以编写

v.assign( ( std::istream_iterator<int>( is ) ), 
          std::istream_iterator<int>() );

或者你可以使用一些标准算法和输入迭代器,使用std:; istream_iterator作为输入迭代器,从流中选择一些单独的值。