C++檔案流:fstream
阿新 • • 發佈:2020-12-15
最近想寫個簡單obj格式的解析程式,要用到檔案讀取/寫入的操作,之前都是用C的標準庫來處理,這次想試試C++的標準庫函式,網上看了些別人寫的部落格,感覺有點亂,然後找到這個網站http://www.cplusplus.com/reference/fstream/fstream/,似乎時c++標準庫的官方網站,內容非常棒
fstream是iostream的子類:
fstream包含了ifstream和ofstream分別讀取流和寫入流
官方文件的一個示例:
fstream fs("fname"); if (fs.is_open()) { fs << "lorem ipsum"; std::cout<< "Operation successfully performed\n"; fs.close(); } else { std::cout << "Error opening file"; }
開啟容易我們關注的是讀取其中的內容,這裡有幾個主要的函式:
1.獲取檔案大小
方法還是和C的一樣
ifs.seekg(0, ifs.end); int length = ifs.tellg(); //檔案大小儲存在length,單位為位元組 ifs.seekg(0, ifs.beg);
2.get()函式
int get(); istream& get (char& c); istream& get (char* s, streamsize n); istream& get (char* s, streamsize n, char delim); istream& get (streambuf& sb); istream& get (streambuf& sb, char delim);
英文的介紹是:Get characters
3.getline()函式
istream& getline (char* s, streamsize n ); istream& getline (char* s, streamsize n, char delim );
引數就是個char陣列,n一般填陣列大小,delim類似分隔符,比如設定為空格的話,遇到空格就返回,空格後的內容下次呼叫getline才會讀取
4.read()函式
istream& read (char* s, streamsize n);
直接讀取n個位元組的資料儲存到s中,解析txt肯定用這個函數了
官方示例程式碼:
std::ifstream is ("test.txt", std::ifstream::binary); if (is) { // get length of file: is.seekg (0, is.end); int length = is.tellg(); is.seekg (0, is.beg); char * buffer = new char [length]; std::cout << "Reading " << length << " characters... "; // read data as a block: is.read (buffer,length); //在這裡資料處理 delete[] buffer; }
一目瞭然,C++的檔案讀取就幾個函式而已
更多相關資訊在這http://www.cplusplus.com/reference/fstream/fstream/