C++ 文字IO
阿新 • • 發佈:2018-12-18
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