c++ - boost:algorithm::join() 可以连接一个 float 容器吗?

标签 c++ string boost stl adapter

Boost 连接可用于连接字符串容器,可选地由分隔符字符串分隔,如下例所示:A good example for boost::algorithm::join

我的 STL 技能很弱。我想知道是否有任何方法可以对数字容器( float 、 double 、整数)使用相同的函数?似乎应该有一些一两行来适应其他类型。

还有 STL 的复制功能,这里有一个很好的例子: How to print out the contents of a vector?

但我不喜欢它在每个元素之后添加分隔符字符串的方式。我只想使用 boost。

最佳答案

当然,您可以结合 boost::algorithm::joinboost::adaptors::transformed将 double 转换为字符串,然后将它们连接在一起。

#include <iostream>
#include <vector>
#include <string>

#include <boost/algorithm/string/join.hpp>
#include <boost/range/adaptor/transformed.hpp>

int main()
{
    using boost::adaptors::transformed;
    using boost::algorithm::join;

    std::vector<double> v{1.1, 2.2, 3.3, 4.4};

    std::cout 
      << join( v | 
               transformed( static_cast<std::string(*)(double)>(std::to_string) ), 
               ", " );
}

输出:

1.100000, 2.200000, 3.300000, 4.400000


您还可以使用 lambda 来避免丑陋的类型转换

join(v | transformed([](double d) { return std::to_string(d); }), ", ")

关于c++ - boost:algorithm::join() 可以连接一个 float 容器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16964353/

相关文章:

c++ - 如何毫无问题地避免 "taking address of temporary"?

c++ - 一个定义规则和两个翻译单元中的不同类定义

c++ - 体系结构 x86_64 的 undefined symbol - 如何查找丢失的文件

c - 字符串字符处理 : How can I combine a post-processing loop into the primary loop?

c++ - boost 空 std::forward_list 的序列化

c++ - 在 3 元素映射 C++ 中添加新项目并使用时间键搜索

c++ - Trie 结束于当前节点或之后的节点

java - 如何将参数按升序排序?

string - 从字符串路径获取文件名?

c++更新 boost 版本问题