我有一个字符串向量,如下所示:
{"abc"}{"def"}{"ghi"}
我希望将它们连接成一个字符串,并使用“ - ”之类的分隔符。
在不使用典型for循环的情况下,是否有简洁(漂亮)的方法?我有c ++ 03并且可以使用它。
答案 0 :(得分:5)
当然,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, "-");
答案 1 :(得分:1)
仅供参考,目前有std::join
提案,您可以查看here。
但是由于你有可用的提升,你可以使用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
答案 2 :(得分:1)
仅使用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()