这几天看了C++ plus上的文件写入、读取方面的内容,可以说只是有个大概的了解。
鉴于OpenCV中需要保存提取到的图像边缘的坐标值,加上有同学问起,所以打算做一个简短的总结。
1、C++中涉及到的文件写入类是ofstream,可以声明其对象,然后调用类中成员函数进行文本创建、数据写入等操作。
下面来看一下简单实例,后面的例子头文件及main()就不重复给出了:
#include <fstream>
#include <iostream>
#include <stdio.h>
using namespace std;
const int n=10; //这里只是对10个数据进行操作
int main ( )
{
ofstream fout("file1.txt"); //创建待写入数据文件
for(int i=0;i<n;++i)
{
fout.width(2); //设定宽度为2,默认右对齐
fout<<i<<"\n"; //依次写入数据,其他类型原理相同
}
fout.close(); //关闭文件,写入成功
return 0;
}
到这里,数据就成功写到文件“file1.txt”中了,下面可以对其中数据进行读取并输出(或改动后按照上述方法写到另一文件中):
ifstream fin;
fin.open("file1.txt"); //用成员函数open()打开已经存在的文件
int m=0;
for(int i=0;i<n;++i)
{
fin>>m;
cout<<m<<"\n";
}
fin.close();
2、下面这段代码是用C语言实现的,头文件“stdio.h”在上面程序开头已经包含进来了:
FILE *fpout;
fpout=fopen("file2.txt","w"); //第二个参数“w”代表只准写入
for(int i=0;i<n;++i)
{
fprintf(fpout,"%d\n",i*i); //此函数把数据写入文本
}
fclose(fpout);
FILE *fpin;
fpin=fopen("file2.txt","r"); //只读
int num;
for(int i=0;i<n;++i)
{
fscanf(fpin,"%d",&num); //此函数把文件中读取出来的数据赋给接收变量
printf("%d\n",num);
}
fclose(fpin);
还有很多相关知识点,比如类似函数及其中参数的选择。这里没有一一给出,进一步学习中。