【C++】標準文件的輸入輸出!!!

在C++裏面的IO都是以流的形式存在的,所以在對文件進行操作的時候也是以流的形式操作的。
主要的流:ifstream、ofstream、fstream,都包含於fstream頭文件裏面。
ifstream:從內存將文件數據讀在硬盤
ofstream:從硬盤將文件數據讀到內存
fstream:可以對打開的文件進行讀寫操作

ofstream的繼承關係
這裏寫圖片描述
ifstream的繼承關係
這裏寫圖片描述

打開文件
打開文件是通過open函數實現的,函數原型void open ( const char * filename, ios_base::openmode mode = ios_base::out );

參數:
filename:需要打開文件的名稱
mode:打開文件的方式

常用的mode:
ios::app:以追加的形式打開
ios::ate:打開文件後定位帶文件尾
ios::binary:以二進制的形式打開文件
ios::in:以輸入的形式打開文件
ios::out:以輸出的形式打開文件
ios::nocreate:不創建新的文件,即如果打開的文件不存在時候就會報錯
ios::noreplace:不替換文件,即只能打開已存在的文件,如果文件不存在就會報錯
ios::trunc:如果打開的文件存在,就將文件的長度階段爲0

注:這些mode可以並聯使用,如:ios::out | ios::trunc

關閉文件

關閉文件使用的函數是close,函數原型是:void close ( );
當打開的文件使用結束後,需要將打開的文件關閉。使用close函數可以將打開的文件以及相關聯的文件關閉。

文件的讀寫

在需要將將數據輸入到文件裏面去的時候,可以使用<<來操作,當需要將文件裏面的數據輸入到輸出流裏面的時候可以使用getline函數實現。
例如:


#include<iostream>
using namespace std;
#include<fstream>

int main(){
    ofstream out("test.txt");
    out<<"hello world"<<endl;
    ifstream in;
    in.open("test.txt");
    char buf[1024];
    while(!in.eof()){
        in.getline(buf,100);
        cout<<buf<<endl;
    }
}

注:狀態標誌,eof表示是否到達文件末尾

二進制的文件讀寫
寫操作採用write函數;函數原型:ostream& write ( const char* s , streamsize n );
這裏面的write函數是將s裏面的數據寫n個到輸出流對象打開的文件裏面去。
讀操作採用的是read函數,函數原型:istream& read ( char* s, streamsize n );
這裏的read函數是將輸出流對象打開的文件裏面的內容寫n個字符到s裏面去。

文件定位
文件定位使用的函數是seekg()和seekp();
seekp的函數原型:ostream& seekp ( streampos pos );
或者ostream& seekp ( streamoff off, ios_base::seekdir dir );

seekg的函數原型:istream& seekg ( streampos pos );
或者istream& seekg ( streamoff off, ios_base::seekdir dir );

off主要偏移量:
ios::beg:文件開頭
ios::cur:文件的當前位置
ios::end:文件結尾

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章