Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        5年前关闭。
                                                                                            
                
        
我在字符串流中有值,并用空格分隔,我想将这些值单独取出并放入向量中。

最佳答案

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作为输入迭代器从流中选择一些单独的值。

10-04 23:32