C++将矩阵存到.txt文件, 使用 FILE 或 ofstream

本文介绍了在C++中如何将矩阵数据存储到.txt文件的两种方式。第一种方法使用标准库中的`FILE`,通过`fopen`, `fprintf` 和 `fclose` 函数实现写操作。第二种方法利用`ofstream`对象,适用于处理图像数据,如`img_gray`的灰度值。每种方法都详细说明了文件打开模式及其作用。" 121176852,964760,Java集合框架大管家Collections详解,"['Java', '后端开发', '集合框架']
摘要由CSDN通过智能技术生成

在C/C++中常常需要查看中间结果,比如:某一个矩阵中的数据的数值情况,在这种情况下常将该数值矩阵存成 .txt文件再查看。比如:

#include<iostream>
#include<stdio.h>

#include"opencv2/highgui/highgui.hpp"
#include"opencv2/imgproc/imgproc.hpp"
#include"opencv2/core/core.hpp"

int main(){

         int i, j ;
        cv::Mat my_mat( 20, 20, CV_32FC2, cv::Scalar::all(0) ) ;

        FILE *fp ;
        fp = fopen( "myfile.txt", "w" ) ;

        for(i=0; i<my_mat.rows; i++){
           for(j=0; j<my_mat.cols; j++){
                fprintf(fp, "%3.0f", my_mat.at<float>(i,j) ) ;  // the data type should be matched.

                                                                                          //  the same as that of my_mat
           }
           fprintf( fp, "\n"

好的,这里给出将结果保存到 `matrix.txt` 的代码示例: ```c++ #include <iostream> #include <fstream> using namespace std; class Matrix { private: int m, n; int **data; public: Matrix(int m, int n) { this->m = m; this->n = n; data = new int*[m]; for (int i = 0; i < m; i++) { data[i] = new int[n]; for (int j = 0; j < n; j++) { data[i][j] = 0; } } } friend Matrix operator*(const Matrix& m1, const Matrix& m2) { Matrix result(m1.m, m2.n); for (int i = 0; i < m1.m; i++) { for (int j = 0; j < m2.n; j++) { for (int k = 0; k < m1.n; k++) { result.data[i][j] += m1.data[i][k] * m2.data[k][j]; } } } return result; } void setData(int i, int j, int value) { data[i][j] = value; } void saveToFile(const char* filename) { ofstream fout(filename); if (fout.is_open()) { for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { fout << data[i][j] << " "; } fout << endl; } fout.close(); } else { cout << "Error: cannot open file." << endl; } } void print() { for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cout << data[i][j] << " "; } cout << endl; } } }; int main() { Matrix m1(2, 3); m1.setData(0, 0, 1); m1.setData(0, 1, 2); m1.setData(0, 2, 3); m1.setData(1, 0, 4); m1.setData(1, 1, 5); m1.setData(1, 2, 6); cout << "Matrix 1:" << endl; m1.print(); Matrix m2(3, 2); m2.setData(0, 0, 7); m2.setData(0, 1, 8); m2.setData(1, 0, 9); m2.setData(1, 1, 10); m2.setData(2, 0, 11); m2.setData(2, 1, 12); cout << "Matrix 2:" << endl; m2.print(); Matrix result = m1 * m2; cout << "Matrix 1 * Matrix 2:" << endl; result.print(); result.saveToFile("matrix.txt"); return 0; } ``` 在这个示例中,我们在 `Matrix` 类中新增了一个 `saveToFile` 函数,用于将矩阵的数据保存到文件中。在 `main` 函数中,我们通过调用 `result.saveToFile("matrix.txt")` 将结果保存到了 `matrix.txt` 文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值