C++读写操作ofstream(数据丢失问题)
ofstream的使用方法
ofstream是從內存到硬盤,ifstream是從硬盤到內存,其實所謂的流緩沖就是內存空間;
ofstream 該數據類型表示輸出文件流,用于創建文件并向文件寫入信息
ifstream 該數據類型表示輸入文件流,用于從文件讀取信息。
fstream 該數據類型通常表示文件流,且同時具有 ofstream 和 ifstream 兩種功能,這意味著它可以創建文件,向文件寫入信息,從文件讀取信息。
打開文件
在從文件讀取信息或者向文件寫入信息之前,必須先打開文件
ofstream 和 fstream 對象都可以用來打開文件進行寫操作,如果只需要打開文件進行讀操作,則使用 ifstream 對象。
open() 函數的標準語法,open() 函數是 fstream、ifstream 和 ofstream 對象的一個成員
對于第二個參數
ios::app 追加模式。所有寫入都追加到文件末尾。
ios::ate 文件打開后定位到文件末尾。
ios::in 打開文件用于讀取。
ios::out 打開文件用于寫入。
ios::trunc 如果該文件已經存在,其內容將在打開文件之前被截斷,即把文件長度設為 0
用法
ofstream out; out.open("data.txt", ios::binary | ios::app | ios::in | ios::out);//輸出為data.txt文件 out<<"內容"<<"\n"; out.close(); //關閉文件注意ofstream持續寫入文件,數據丟失的問題
對于for循環,持續寫入文件,如下,全部寫在for循環中,數據特別多時,不會丟失數據
int main() {ofstream out; for(int i;i<xx.size();++i){out.open("data.txt", ios::binary | ios::app | ios::in | ios::out);//輸出為data.txt文件out<<"內容"<<"\n";out.close(); //關閉文件} }如果這么寫,將out.open寫在for之外,一旦程序復雜,輸出數據量特別大時,數據將可能發生丟失
int main() {ofstream out; out.open("data.txt", ios::binary | ios::app | ios::in | ios::out);//輸出為data.txt文件 for(int i;i<xx.size();++i){out<<"內容"<<"\n"; }out.close(); //關閉文件 }并且千萬要記得close掉文件。
總結
以上是生活随笔為你收集整理的C++读写操作ofstream(数据丢失问题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【笔记总结】高中生物——【选一 Ⅱ】第二
- 下一篇: s3c2440移植MQTT