這幾天看了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);
還有很多相關知識點,比如類似函數及其中參數的選擇。這里沒有一一給出,進一步學習中。