将一维数组写入CSV C ++中的不同列吗?

问题描述 投票:-1回答:1

我有一个生成一维值数组的函数。我想将该数组存储到CSV文件中。每次调用该函数时,我都希望将此数据存储到CSV中的新列中。现在,我的代码无法正常工作,每次调用该函数时,它都会不断将新的数据数组添加到csv中,但它会将其添加到同一列的底部。我希望将数据存储在下一列中,而不是添加到第一列的底部。任何帮助将不胜感激。

*我已经删除了生成我的standard_dev数组的代码部分*

#include <iostream>
#include <cmath>
#include <fstream>
#include <vector>
#include <iomanip>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include "functions.h"

using namespace cv;
using namespace std;

void standard_deviation_line(Mat image, int column_count) {

    int sum = 0;
    int standard_dev_col = 0;
    int i, j; 
    const int cols = 3840;
    int rows = image.rows;
    float standard_dev[cols];
    float mean[cols];

ofstream out("SD.csv", ios::app);
    for (i = 0; i < cols; i++)
        out << standard_dev[i] << endl;

    out.close();

}
c++ arrays csv append ofstream
1个回答
0
投票

问题是您的for循环中的endl,它输出换行符。

ed:试试这个

template<typename Iter>
std::string join(Iter p0, Iter p1) {
    std::string result{};
    if(p0 != p1) {
        result = std::to_string(*p0++);
    }
    while(p0 != p1) {
        result += ',';
        result += std::to_string(*p0++);
    }
    return result;
}

然后在没有for循环的情况下使用它:

out << join(standard_dev, standard_dev + cols) << '\n';
© www.soinside.com 2019 - 2024. All rights reserved.