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