1. 程式人生 > >C++ 文字IO

C++ 文字IO

1.(基本概念)文字的輸入輸出是以計算機為主角

ifstream 檔案輸入流,以計算機為主角,將檔案輸入到計算機。
ofstream 檔案輸出流,從計算機輸出到檔案。

2.(簡單使用)

模式 含義
ios_base::in 開啟檔案,以備讀取
ios_base::out 開啟檔案,以備寫入
ios_base::ate 開啟檔案,並移到檔案尾
ios_base::trunc 如果檔案存在就擷取檔案
ios_base::app 追加到檔案尾(之前的內容不新增其他模式,則之前的內容為只讀)
ios_base:: binary 二進位制檔案

A Simple Example:
ifstream open() 方法第二個引數 預設為ios_base::in
ofstream open() 方法第二個引數 預設為ios_base::out|ios_base::trunc

#include <iostream>
#include <string>
#include <fstream> #include <cstdlib> const char * file = "guests.txt"; using namespace std; int main(void){ ifstream fin; char ch; fin.open(file); ofstream fout(file,ios::out|ios::app); cout << "Enter guest names (enter ablank line to quit)\n"; string name; while
(getline(cin,name)&& name.size()>0) { fout << name<<endl; } fin.close(); fout.close(); fin.clear(); fin.open(file); if(fin.is_open()) { cout<<"Here are the new contents of the "<<file<<" file:\n"; while (fin.get(ch)) { cout<<ch; } fin.close(); } cout<<"Done.\n"; return 0; }

3.隨機讀取

兩個重要函式seekg(), seekp() 讀取指標移到指定的位置、輸出指標移到指定的位置
模式 含義
ios_base::beg 相對檔案開始位置的偏移量
ios_base::cur 相對於當前位置的偏移量

fin.seekg(30,ios_base::beg);//30 bytes beyond the beginning
fin.seekg(-1,ios_base::cur);//back up one byte
fin.seekg(0,ios_base::end);//go to the end of the file
fin.seekg(0);//go to the beginning of the file