最近需要完成乙個樹葉分類的作業,需要提取樹葉的紋理特徵並將其相關的引數記錄下來,需要用到檔案的讀寫操作,此處就詳細記錄一下相關的知識。根據我自身需要用到的東西,大概可以分為普通c++中.txt檔案的讀取以及opencv中批量的讀取。
主要參考:
和fstream提供了三個類,用來實現c++對檔案的操作。(檔案的建立、讀、寫)。
ifstream – 從已有的檔案讀
ofstream – 向檔案寫內容
fstream - 開啟檔案供讀寫
檔案開啟模式:
檔案指標位置在c++中的用法:
ios::beg 檔案頭
ios::end 檔案尾
ios::cur 當前位置
例子:file.seekg(0,ios::beg); //讓檔案指標定位到檔案開頭
file.seekg(0,ios::end); //讓檔案指標定位到檔案末尾
file.seekg(10,ios::cur); //讓檔案指標從當前位置向檔案末方向移動10個位元組
file.seekg(-10,ios::cur); //讓檔案指標從當前位置向檔案開始方向移動10個位元組
file.seekg(10,ios::beg); //讓檔案指標定位到離檔案開頭10個位元組的位置
常用的錯誤判斷方法:
good() 如果檔案開啟成功
bad() 開啟檔案時發生錯誤
eof() 到達檔案尾
接下來是**實戰:
#include
#include
using
namespace std;
void
main()
else
} in.
close()
;//關閉檔案
}
建立com.txt的檔案,並且寫如資料如下:
是用來讀取回車鍵的,如果沒這一行,輸出的結果一閃就消失了
}讀取檔案,並輸出資料:
這個方法讀取的檔案,所有字元都一起顯示,不會分行。這裡字母z顯示兩次,是正常的,因為在輸出檔案最後乙個字母z之後,又輸出了一次(可以仔細考慮程式**)。
讀取檔案某一行內容:
#include
#include
#include
using
namespace std;
intcountlines
(char
*filename)
else
//檔案存在
return n;
}readfile.
close()
;}string readline
(char
*filename,
int line)
if(file.
fail()
)if(line>lines)
while
(getline
(file,temp)
&&ifile.
close()
;return temp;
}void
main()
很顯然,根據以上程式,利用迴圈,可以逐行讀取整個檔案內容。
三、統計檔案的行數
#include
#include
using
namespace std;
intcountlines
(char
*filename)
else
//檔案存在
return n;
}readfile.
close()
;}void
main()
以上程式的設計思路沒有問題,但在實際操作的時候會發現統計出的行數與實際不符,原因在於readfile.getline(line,512,』\n』)這一句:當一行字元超過512或遇到回車之後,行數自動加1.如果換行符在新的一行,返回的結果會比實際多1;如果不在新的一行,返回結果與實際相符。可以修改如下:
#include
#include
#include
using
namespace std;
intcountlines
(char
*filename)
else
//檔案存在
return n;
}readfile.
close()
;}void
main()
四、讀取檔案資料到陣列
#include
#include
#include
using
namespace std;
intcountlines
(char
*filename)
//獲取檔案的行數
else
//檔案存在,返回檔案行數
return n;
}readfile.
close()
;}void
main()
else
//檔案存在
file.
close()
;//關閉檔案
for(i=
0;i)//輸出陣列內容
cout<
<<
"\t"
<
<
cin.
get();
cin.
get();
}}
參考:
#include
#include
#include
#include
#include
using
namespace cv;
using
namespace std;
intmain()
for(
unsigned
int frame =
0; frame < image_files.
size()
;++frame)
return0;
}
結果:
c 檔案讀寫 文字讀寫
include int main else return 0 格式 intfscanf file stream,constchar format,返回值 如果成功,該函式返回成功匹配和賦值的個數。如果到達檔案末尾或發生讀錯誤,則返回 eof 引數1 file stream 檔案指標 引數2 cons...
C 檔案讀寫
原文 http www.vckbase.com document viewdoc id 1439 原作 john peregrine file i o using c 序論 我曾發表過檔案輸入輸出的文章,現在覺得有必要再寫一點。檔案 i o 在c 中比烤蛋糕簡單多了。在這篇文章裡,我會詳細解釋asc...
C 讀寫檔案
1 使用filestream讀寫檔案 檔案頭 using system using system.collections.generic using system.text using system.io 讀檔案核心 byte bydata new byte 100 char chardata ne...