将矢量到字符串的值存储为逗号分隔的值
Storing values from a vector to a string as comma seperated values
如何将函数返回的值存储为逗号分隔的值。有人能帮我吗。。?
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;
相关文章:
- 将字符串存储在c++中的稳定内存中
- std::原子加载和存储都需要吗
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 从文件中读取后,将分号分隔的整数存储到数组中
- 获取由空格分隔的未知大小的单行输入,并将其存储到整数数组中
- 如何分隔字符串并将每个部分存储在不同的向量中
- C 程序要读取包含两个双重值的Excel数据的单列,这些值由逗号分隔并存储在自己的数组中
- 在C++中分隔字符串并存储到数组中的最佳方法
- 从用分号分隔的文件中读取并存储到数组中
- 要存储到数据结构中的制表符分隔的文件数据
- C++-将用逗号分隔的用户输入字符串存储到向量中
- C++:读取分隔文件并存储在结构中
- 将用户输入的前两个单词分隔一个空格,然后存储剩余短语(C++)
- 从制表符分隔的文件中读取2D数据并存储在矢量C++中
- 在文件中存储由分隔符分隔的大量整数的键值对的最有效方法
- 从cin流中读取字符串并存储以空格分隔的值
- 如何在数组中存储以逗号分隔的文件的第n列
- 取多行输入,以逗号分隔,将每行存储到字符串数组中
- 存储由空格分隔的字母矩阵
- 将矢量到字符串的值存储为逗号分隔的值