Запись массива 1D в разные столбцы в CSV C ++? - PullRequest
0 голосов
/ 15 января 2020

У меня есть функция, которая генерирует одномерный массив значений. Я хочу сохранить этот массив в файл 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();

}

1 Ответ

0 голосов
/ 15 января 2020

Проблема в том, что endl у вас для l oop, он выводит перевод строки.

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;
}

, затем используйте его без для l oop как это:

out << join(standard_dev, standard_dev + cols) << '\n';
...