如何使用 boost 连接 c++ 中的字符串向量
How do I concatenate a vector of strings in c++ with boost?
我有一个字符串向量,像这样:
{"abc"}{"def"}{"ghi"}
我想将它们连接成一个字符串,并带有类似"-"的分隔符。
有没有一种简洁(漂亮)的方法可以在不使用典型的 for 循环的情况下做到这一点?我有 c++03 和 boost 可供我使用。
当然,boost提供了一种方便的算法来实现您要做的事情。在更高级的语言中,您可能已经发现了一个连接函数。Boost 在连接函数中提供了等效的算法。
#include <boost/algorithm/string/join.hpp>
using namespace std;
string data[] = {"abc","def","ghi"};
const size_t data_size = sizeof(data) / sizeof(data[0]);
vector<string> stringVector(data, data + data_size);
string joinedString = boost::algorithm::join(stringVector, "-");
仅供参考,目前有一个关于std::join
的建议,你可以在这里查看。
但是由于你有可用的 boost,你可以使用 boost::algorithm::join
,它需要一个字符串序列和一个分隔符,如下所示:
#include <iostream>
#include <string>
#include <vector>
#include <boost/algorithm/string/join.hpp>
int main() {
std::vector<std::string> words;
words.push_back("abc");
words.push_back("def");
words.push_back("ghi");
std::string result = boost::algorithm::join(words, "-");
std::cout << result << std::endl;
}
指纹:
abc-def-ghi
仅使用 STL 的另一个选项是:
std::ostringstream result;
if (my_vector.size()) {
std::copy(my_vector.begin(), my_vector.end()-1,
std::ostream_iterator<string>(result, "-"));
result << my_vector.back();
}
return result.str()
相关文章:
- 在 C++11 中,如何查找并返回以给定字符串开头的字符串向量中的所有项?
- 在将字符串放入字符串向量时遇到问题?
- 如何从字符串向量构造对象并避免复制?
- 如何在目录及其子文件夹中构建文件名字符串向量?
- 当映射包含字符串向量作为值时,从值中获取键的有效方法
- 将字符串向量中的字符串放入主字符串中
- 如何在 c++ 中从字符串向量中读取
- 用字符串的向量分配字符串向量
- 如何使用 STL 算法将整数向量转换为字符串向量?
- C++ 中字符串向量的索引
- 如何根据第二列/第三列等对字符串向量进行排序?
- 如何从输入中获取字符串向量?
- 使用 C++-17,如何从字符串向量填充元组
- 对于循环增量器不能用作字符串向量的索引
- 我有一个返回字符串向量的函数.它需要两个字符串,并且返回一个字符串中缺少的字符串
- 如何从字符串向量中选择第 n 个位置?
- 如何将csv中的数据放入c++中的字符串向量中,而绝对没有任何作用
- 反转不带反转函数的字符串向量
- 如何在字符串向量中指向const int
- 如何在字符串向量中找到某个值