一、打開文件
使用ifstream類可以方便地讀取文件內容。在使用ifstream類時,首先需要打開文件。打開文件的代碼示例如下:
#include <fstream> using namespace std; int main() { ifstream fin; fin.open("example.txt"); if (!fin.is_open()) { cout << "文件打開失敗!" << endl; return 1; } // 其他操作 fin.close(); // 關閉文件 return 0; }
在示例中,首先聲明一個ifstream對象fin,然後通過其open()函數打開文件example.txt。在打開文件後,可以通過is_open()函數來判斷文件是否打開成功。如果成功,is_open()函數將返回true,否則返回false。
二、讀取文件內容
在打開文件成功後,就可以使用ifstream對象的相關函數來讀取文件內容。常用的函數有get()、getline()、read()、peek()和ignore()。
1、使用get()函數讀取文件內容
get()函數用於從文件中讀取一個字符。調用get()函數時,當前文件指針將向前移動一個字符。代碼示例如下:
#include <iostream> #include <fstream> using namespace std; int main() { ifstream fin; fin.open("example.txt"); if (!fin.is_open()) { cout << "文件打開失敗!" << endl; return 1; } char c; while (fin.get(c)) { cout << c; } fin.close(); // 關閉文件 return 0; }
在示例中,使用while循環和get()函數逐個讀取文件中的字符,並輸出到控制台。
2、使用getline()函數讀取文件內容
getline()函數用於從文件中讀取一行內容。調用getline()函數時,當前文件指針將移到下一行的起始位置。代碼示例如下:
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { ifstream fin; fin.open("example.txt"); if (!fin.is_open()) { cout << "文件打開失敗!" << endl; return 1; } string line; while (getline(fin, line)) { cout << line << endl; } fin.close(); // 關閉文件 return 0; }
在示例中,使用while循環和getline()函數逐行讀取文件內容,並輸出到控制台。
3、使用read()函數讀取文件內容
read()函數用於從文件中讀取指定數量的字節。代碼示例如下:
#include <iostream> #include <fstream> using namespace std; int main() { ifstream fin; fin.open("example.txt", ios::binary); if (!fin.is_open()) { cout << "文件打開失敗!" << endl; return 1; } const int BUF_SIZE = 1024; char buf[BUF_SIZE]; while (fin.read(buf, BUF_SIZE)) { cout.write(buf, fin.gcount()); } fin.close(); // 關閉文件 return 0; }
在示例中,使用while循環和read()函數逐塊讀取文件內容,並輸出到控制台。需要注意的是,read()函數需要指定打開文件的方式為二進制模式(ios::binary),否則在讀取二進制文件時可能會導致數據丟失或錯亂。
三、關閉文件
在使用完文件後,需要調用ifstream對象的close()函數來關閉文件:
fin.close();
四、完整代碼示例
下面是一個完整的使用ifstream類讀取文件內容的示例代碼:
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { ifstream fin; fin.open("example.txt"); if (!fin.is_open()) { cout << "文件打開失敗!" << endl; return 1; } // 逐個字符讀取文件內容 char c; while (fin.get(c)) { cout << c; } // 逐行讀取文件內容 string line; fin.clear(); // 清除文件流狀態,將文件指針移到文件開頭 fin.seekg(0, ios::beg); while (getline(fin, line)) { cout << line << endl; } // 逐塊讀取文件內容 const int BUF_SIZE = 1024; char buf[BUF_SIZE]; fin.clear(); // 清除文件流狀態,將文件指針移到文件開頭 fin.seekg(0, ios::beg); while (fin.read(buf, BUF_SIZE)) { cout.write(buf, fin.gcount()); } fin.close(); // 關閉文件 return 0; }
在示例中,首先使用get()函數逐個字符讀取文件內容,然後使用getline()函數逐行讀取文件內容,最後使用read()函數逐塊讀取文件內容。
原創文章,作者:DMOMG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/313764.html