c++ - 如何在 C++ 中使用 STL 将带空格的字符串连接成一个字符串

标签 c++ stl

<分区>

给定一个字符串 vector ["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::stringstream ss;
const int v_size = v.size();
for(size_t i = 0; i < v_size; ++i)  // v is your vector of string
{
  if(i != 0)
    ss << " ";
  ss << v[i];
}
std::string s = ss.str();

关于c++ - 如何在 C++ 中使用 STL 将带空格的字符串连接成一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20986144/

相关文章:

c++ - 我应该将所有对 new/delete 的调用集中到一个类中吗?

c++ - 在构造函数中创建一个指针以指向 C++ 中类的实例

c++ - 如何从 C++ 中的二进制文件中读取类

c++ - 使用 C++ 模板魔法进行通用和存在量化

c++ - 在 C++ 中找到两个 float 最大值的最快方法是什么?

c++ - 设置自定义比较类型

c++ - 模板名和类模板名的区别

c++ - 对 STL 集使用比较器

c++ - 如何将线程与容器 C++ 一起使用

c++ - 将 STL chrono 结果与浮点进行比较