C++_IO类型_文件输入输出流_字符串流
IO類型
- iostream: 用于窗口的輸入輸出
- fstream: 用于文件讀寫
- sstream :讀寫存儲在內存中的string對象
注:他們繼承于istream與ostream,因此istream對象也可用于讀取ifstream, string對象, ostream對象同上; 并且iostream類型可在同一個流實現輸入輸出操作;.
IO對象不可復制賦值
IO條件狀態
條件狀態包含:
- strm:badbit :被破壞的流
- strm::failbit: 失敗的IO操作
- strm::eofbit: 指出流已經到達文件結束符
- clear: 將流中狀態值重置為有效值
- setstate: 添加指定條件(為strm::iostate類型)
注:前三者都為iostate類型, IO類定義了3個iostate類型的常量值:badbit,failbit,eofbit
所有流對象都包含一個條件狀態成員,由setstate,clear(添加IO條件,將某個條件狀態設置為有效值)操作管理;該狀態成員為iostate類型,以二進制(bit)形式使用.
流的狀態由bad,fail,eof,good操作提示,流正確時bad,fail,eof返回 false,good返回true
例:流狀態的查詢與控制
當同時使用多個狀態時可采用直接或運算(滿足條件的二進制位都變為1)
i.setstate(ifstream::badbit|ifstream::failbit); //同時將開啟流狀態成員輸入輸出緩沖區管理
每個IO對象都具有一個緩沖區,用于儲存程序讀寫數據
如下操作導致緩沖區內容被刷新
- 程序正常結束
- 緩沖區已經存滿
- 使用操作符顯示刷新緩沖區,例:endl,flush
- 輸入操作完成,用unitbuf操作符設置流內部狀態
- 將輸入輸出流關聯,在讀取時將刷新關聯的輸出緩沖區
注:unitbuf用于刷新所有輸出,當程序不正常結束,不會刷新緩沖區,系統不會在程序崩潰時自動刷新緩沖區
輸入輸出關聯
IO對象具有tie函數,用法如下:
文件輸入流與輸出流
- ofstream: 輸出文件流,創建文件并向文件寫入信息
- ifstream:輸入文件流,從文件讀取信息
- fstream:同時具有ofstream與ifsteam的功能
文件操作時,C++源代碼必須包含< iostream> < fstream>
打開文件
void open(const char *filename,ios::openmode mode);
第一個參數文件位置及文件名,第二個參數打開類型; open是文件流對象的成員函數
mode具有如下:
- ios::app :在文件末尾添加內容
- ios::ate :文件打開后定向到末尾
- ios::in :打開文件用于讀取
- ios::out :打開文件用于輸入
- ios:trunc :打開文件清空已存在的文件流(我的理解是覆蓋以前文件內容,有不對的地方還請指出)
以上介紹的標志可以結合使用,out,trunc,app只能用于指定與ofstream或fstream對象關聯的文件,默認打開形式只有in,out
ofstream outfile; outfile.open("data.txt",ios::in|ios::trunc); //或者 fstream file; //fstream對象默認打開方式為in和out同時打開 file.open("data.txt",ios::in|ios::out);關閉文件: 流對象.close();
寫入文件: 流插入運算符(<<)
讀取文件: 流提取符(>>)
實例操作:
字符串流
標準庫定義三種類型字符串流
- istringstream: istream派生,提供讀string
- ostringstream: ostream派生,提供寫string
- stringstream: iostream派生,提供讀寫
注:必須包含sstream頭文件
stringstream的特定操作
- stringstream strm: 創建對象
- stringstream strm(s): 用string對象s初始化strm;
- strm.str(): 返回strm中存儲的string類型對象
- strm.str(s): 將s復制給strm,返回void
ostringstream可用于格式轉換
istringstream自動將數值類型的字符轉化為相應數值
注:上述操作中注意需要將string對象分割才能得到,空白符與換行符會被忽略
總結
以上是生活随笔為你收集整理的C++_IO类型_文件输入输出流_字符串流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7关机快捷键_1个U盘+1款软件,
- 下一篇: 常用排序算法以及算法性能测试(完整C/C