文本文件
程序運行時產生的數據都屬于臨時數據,程序一旦運行結束都會被釋放
通過文件可以將數據持久化
C++的文件操作需要包含頭文件
文件分類
文本文件:文件以文本的ASCII碼形式存儲在計算機中
二進制文件:文件以文本的二進制形式存儲在計算機中,用戶一般不能直接讀懂他們
打開文件的方式
ios::in 為讀文件而打開文件
ios::out 為寫文件而打開文件
ios::ate 初始位置:文件尾
ios::app 追加方式寫文件
ios::trunc 如果文件存在先刪除再創建
ios::binary 二進制形式
文件三種操作
ofstream:寫操作
ifstream讀操作
fstream:讀寫操作
寫文件
int main() {// 創建流對象ofstream ofs;// 打開文件,以寫文件格式寫文件ofs.open("mle.txt", ios::out);// 寫文件內容ofs << "姓名:張三" << endl;ofs.close();
}
讀文件
int main() {// 創建流對象ifstream ifs;// 打開文件,以讀文件打開文件ifs.open("mle.txt", ios::in );// 寫文件內容char buf[1024] = { 0 };// 方法一while (ifs>>buf) {cout << buf << endl;}// 方法2while (ifs.getline(buf, sizeof(buf))) {cout << buf << endl;}// 方法3string buf;while(getline(ifs, buf)) {cout << buf << endl;}char c;while ((c = ifs.get()) != EOF) {cout << c;}ifs.close();
}
二進制文件
寫文件
class Person {
public:string name;
};int main() {ofstream ofs;ofs.open("person.txt", ios::out | ios::binary);Person p = { "zhangsan" };// 把p寫入文件,寫入大小為sizeof(Person)ofs.write((const char *)&p,sizeof(Person));ofs.close();
}
讀文件
class Person {
public:string name;
};int main() {ifstream ifs;ifs.open("person.txt", ios::in | ios::binary);Person p ;ifs.read((char*)&p, sizeof(Person));ifs.close();}