修改后的代码如下:

void write_tsv2(const std::string& filename, const matrix<double, row_major>& mat, const std::vector<std::string>& col_names) {
    matrix<std::string, row_major> result(mat.size1(), 2);
	for (size_t i = 0; i < mat.size1(); i++) {
		for (size_t j = i+1; j < mat.size1(); j++){
			result(i,0)=col_names[i];
			result(j,1)=col_names[j];
		}
	}
	std::ofstream out(filename);
    if (out) {
        // 输出列名
        out << 'var1' << '	' << 'var2' << '	' << 'MIC' << '\n';
        for (size_t i = 0; i < mat.size1(); ++i) {
            out << result(i,0) <<'\t'<<result(i,1) << '\n';
        }
        // 输出数据行
        for (size_t i = 0; i < mat.size1(); ++i) {
            out << std::setprecision(3) <<std::fixed << mat(i, 0) << '\n';
        }
        out.close();
    } else {
        // 输出文件打开失败错误信息
        std::cerr << "Error: Failed to open file." << std::endl;
    }
}

修改说明:

  1. 添加了对文件打开是否成功的检查。
  2. 添加了对输出文件流的关闭操作。
  3. 修正了输出列名的位置。
  4. 去掉了注释掉的输出数据行的代码块。

原文地址: https://www.cveoy.top/t/topic/p8B7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录