将矢量到字符串的值存储为逗号分隔的值

Storing values from a vector to a string as comma seperated values

本文关键字:分隔 存储 字符串      更新时间:2023-10-16

如何将函数返回的值存储为逗号分隔的值。有人能帮我吗。。?

const myVector &vecList = obj.get_List();
vector<myNumVector *>::const_iterator iter;
for (iter= vecList.begin(); iter!= vecList.end(); iter++)
{
  string myNum = (*iter)->get_myNum();
  string myNumList = ? 
  //myNumList should be = drt123,ret34,dfghgd234.... if these are the return values
} //can we achive this by use of some sting functions..?

从我发布的链接中可以看出,有很多方法可以做到这一点。我相信,这是最简单的:

#include <vector>
using std::vector;
#include <string>
using std::string;
#include <boost/assign/list_of.hpp>
using boost::assign::list_of;
namespace ba = boost::assign;
vector<string> victor = list_of
  ("Clarence Oveur")
  ("Roger Murdock")
  ("Victor Basta");
int main() {
  string result;
  for(vector<string>::iterator it = victor.begin();
    it != victor.end();
    ++it) {
    if(it != victor.begin()) {
      result += ", ";
    }
    result += *it;
  }
  cout << result << "n";
}


编辑:直接翻译成OP的问题:

const myVector &vecList = obj.get_List();
vector<myNumVector *>::const_iterator iter;
string myNumlist;
for (iter= vecList.begin(); iter!= vecList.end(); iter++)
{
  string myNum = (*iter)->get_myNum();
  if(iter!=vecList.begin()) {
    nyNumList += ",";
  }
  myNumList += myNum;
}


EDIT:通过从以前的解决方案中删除bool first而简化。

#include <vector>
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
    
int main () {
    std::vector<int> v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    v.push_back(4);
    std::stringstream list;
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(list, ","));
    std::cout << list.str();
    return 0;
}

输出:1,2,3,4,

更现代的方法,也解决了拖尾">

#include <string>
#include <numeric>
#include <iostream>
int main() {
    const auto v = {1, 2, 3, 4};
    const auto list = std::accumulate(begin(v), end(v), std::string{}, [](const std::string& so_far, const auto& next) {
        return so_far + (so_far.empty() ? "" : ", ") + std::to_string(next);
    });
    std::cout << list;
    return 0;
}

是的,这可以使用字符串函数以及其他一些方法来实现。

给定循环外定义的string myNumList,您可以简单地进行

myNumList += "," + myNum;

尽管这会在beining中添加一个无关的逗号,但请检查iter是否首先指向那里:

if(iter != vecList.begin())
    myNumList += ',';
myNumList += myNum;