gpt4 book ai didi

c++ - 使用复制和 ostream_iterator 删除为 vector 编写的 CSV 文件中的尾随逗号

转载 作者:行者123 更新时间:2023-11-30 02:36:07 24 4
gpt4 key购买 nike

我有以下函数,它将 vector 写入 CSV 文件:

#include <math.h>
#include <vector>
#include <string>
#include <fstream>
#include <iostream>
#include <iterator>
using namespace std;

bool save_vector(vector<double>* pdata, size_t length,
const string& file_path)
{
ofstream os(file_path.c_str(), ios::binary | ios::out);
if (!os.is_open())
{
cout << "Failure!" << endl;
return false;
}
os.precision(11);
copy(pdata->begin(), pdata->end(), ostream_iterator<double>(os, ","));
os.close();
return true;
}

但是,CSV 文件的结尾是这样的:

1.2000414752e-08,1.1040914566e-08,1.0158131779e-08,9.3459324063e-09,

也就是说,一个尾随逗号被写入文件。当我尝试使用其他软件程序加载文件时,这会导致错误。

摆脱(理想情况下,永远不要写)这个尾随逗号的最简单、最有效的方法是什么?

最佳答案

正如您所观察到的,通过 std::copy 进行复制并没有起到作用,一个额外的 , 被输出。有一个提案可能会成为 future 的 C++17 标准:ostream_joiner ,这将完全符合您的预期。

但是,现在可用的快速解决方案是手动完成。

for(auto it = std::begin(*pdata); it != std::end(*pdata); ++it)
{
if (it != std::begin(*pdata))
std::cout << ",";
std::cout << *it;
}

关于c++ - 使用复制和 ostream_iterator 删除为 vector 编写的 CSV 文件中的尾随逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33094317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com