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

标签 c++ vector stringstream

<分区>

我有一个字符串流中的值,用空格分隔,我想将这些值单独提取出来并将它们放入一个 vector 中。

最佳答案

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 

如果已经定义了 vector 那么你可以写

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

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

关于C++ 如何从字符串流中取出值并将它们放入 vector 中,以便我可以单独访问它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25796080/

相关文章:

c++ - 在 windows、nix 和 macos 上弹出错误消息框的最简单方法?

c++ - 新的 int[size] 与 std::vector

c++ - 使用 stringstream 来标记具有不同分隔符的字符串

c++ - 如何阻止读取 C++ stringstream 以等待数据

C++:字符串流有什么好处?

c++ - 用 Lapack 的 dgeqrf_ 求解线性系统

c++ - MFC 基于对话框的应用程序标题栏突出显示 Windows 10 上的视觉工件(即 CDialogEx 中的错误)

具有不同值类型模板参数的模板类的 C++ 数组或 vector

c++ - 删除 vector 的元素

c++ - 无法检测图像的水平线