我有一个生成一维值数组的函数。我想将该数组存储到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();
}
问题是您的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';