【发布时间】:2014-01-08 02:54:53
【问题描述】:
给定一个字符串向量 ["one", "two", "three"]。
问题>如何转换成“一二三”?
我知道手动执行循环的方法,想知道是否 STL 函数有一个更简单的方法。
//根据我应该使用accumulate的建议更新
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
struct BindTwoStrings
{
string operator()(const string& s1, const string& s2) const {
return s1.empty() ? s2 : s1 + " " + s2;
}
};
int main()
{
vector<string> vecString {"one", "two", "three"};
string ret2;
ret2 = accumulate(vecString.begin(), vecString.end(), ret2,
[] (const string& s1, const string& s2) -> string {
return s1.empty() ? s2 : s1 + " " + s2; });
cout << "ret2:\"" << ret2 << "\"" << endl;
string ret;
ret = accumulate(vecString.begin(), vecString.end(), ret, BindTwoStrings());
cout << "ret:\"" << ret << "\"" << endl;
return 0;
}
【问题讨论】:
-
或
std::stringstream与std::ostream_iterator和std::copy。