我在字符串流中有值,用空格分隔,我想将这些值拉出来并将它们放入向量中。
答案 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作为输入迭代器,从流中选择一些单独的值。