Boost 连接可用于连接字符串容器,可选地由分隔符字符串分隔,如下例所示:A good example for boost::algorithm::join
我的 STL 技能很弱。我想知道是否有任何方法可以对数字容器( float 、 double 、整数)使用相同的函数?似乎应该有一些一两行来适应其他类型。
还有 STL 的复制功能,这里有一个很好的例子: How to print out the contents of a vector?
但我不喜欢它在每个元素之后添加分隔符字符串的方式。我只想使用 boost。
最佳答案
当然,您可以结合 boost::algorithm::join
和 boost::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/