低階i/o功能(如無格式的i/o):通常指大量的位元組在裝置到記憶體或記憶體到裝置的簡單傳輸。
高階i/o功能(格式化i/o):它將位元組組合成有意義的單元,如資料型別。
對於大容量檔案的處理,使用無格式的i/o可獲得最佳的效能。
不帶引數值成員函式get ,從指定的流中讀取乙個字元(即使是空格),並返回該字元作為該函式的呼叫值。遇到檔案結束時返回eof。
get函式還可以帶3個引數:接收字元的字元型陣列,陣列大小和分隔符(預設為'/n')。從輸入流中讀取資料時,讀取到比指定的最大字元數少乙個字元中止,或者讀取到指定的分隔符終止。為了使字串陣列(被程式用作緩衝區)中的輸入字串結束,空字元會被插入到字元陣列中。分隔符不會被儲存在陣列中,但仍保留在輸入流中(下乙個要被讀取的字元),所以除非分隔符從輸入流中重新整理,否則緊接著的第二個get操作結果就是空行。
getline函式的操作與帶3個引數的get成員函式類似,讀取一行字串後在字串陣列中插入乙個空格,不同的是getline會從輸入流中刪除分隔符,而不是把它放入陣列。
用於跳過指定數量的字元(預設1)或轉到指定的分隔符(預設eof),在讀取檔案該分隔符可使ignore跳到檔案末尾終止輸入。
putback的作用是把上次從輸入流中通過get取得的字元在放回該輸入流中。對於應用程式需要掃瞄輸入流以查詢以特定字元開頭的字段來說,非常有用。
peek的功能是返回輸入流一下個字元,而不是從輸入流中刪除該字元。
read
write專用於處理無格式的輸入/輸出。它們負責把一定量的位元組輸入記憶體的陣列,以及從記憶體陣列中輸出位元組(未被格式化)。
gcount可以統計最後一次輸入操作讀取的字元數。
用來完成格式化i/o,諸如設定域寬,設定精度,設定和清除格式化標誌,設定字段填充字元,重新整理流,在輸入流中插入一行並重新整理流,在輸出流中插入空白字元,跳過輸入流的空白字元等功能。
dec oct hex setbase (如setbase(10)十進位制)
十進位制 八進位制 十六進製制 引數化流操縱元
精度一旦設定,就可用語以後所有的輸出流操作,直至精度發生變化。
cout.precision( num );setwsetprecision( num );
width寬度的設定僅使用於下一行的流插入或流讀取,在該次操作完成之後,寬度就被置回0(即輸出值按照所需的寬度來輸出)不帶引數的width函式返回當前的設定。
各種格式標誌指定了即將在i/o流操作期間執行的格式型別,成員函式setf,unsetf和flags用語設定控制標誌。
舉例:
cout.setf( iso::showpos ) //指定正負數前要加+和-號ios類中的位可用於測試流的狀態。cout.setf( iso::scientific ) //指定浮點數輸出採用科學記數法
cout.setf( iso::left )
cout.setf( iso::right ) //左/右對齊輸出
遇到檔案結束符之後,將為輸出流設定eofbit位。呼叫成員函式來確定是否已經遇到了檔案結束符。
流中發生格式錯誤時,雖然會設定failbit,但字元不會丟失。成員函式fail判斷流操作是否失敗,這種錯誤通常可修復。
發生導致資料丟失的錯誤時,設定dadbit。成員函式bad判斷留操作是否失敗,這種嚴重的錯誤通常不可修復。
如果以上的3狀態沒有設定,則設定goodbit。
測試流狀態較好的方法是使用成員函式eof,bad,fail,good。
clear通常用於把乙個流狀態恢復為"good",從而可以對該流繼續執行i/o操作,由於其預設引數ios::goodbit利用語句 cin.clear()
例:cin.clear( ios::failbit )為流設定了failbit。
成員函式tie以同步istream和ostream 的操作以保證輸出在輸入之前顯示出來
例: cin.tie( &cout );不過這個c++會自動執行。
inputstream.tie( 0 ) 解除從輸出流到輸入流的連線
檔案的拷貝:(將to.txt中的內容全部複製到from.txt)
view plaincopy to clipboardprint?strstreams介紹:ifstream in("to.txt");
assert(in);
ofstream out("from.txt");
assert(out);
out << in.rdbuf() ;
ifstream in("to.txt");
assert(in);
ofstream out("from.txt");
assert(out);
out << in.rdbuf() ;
istrstream::istrstream( char* buf );
//取乙個指向零終止符陣列的指標;可以提取位元組直到零為止。
istrstream::istrstream( char* buf, int size );
//可以一直提取位元組到buf[size],而不管是否遇到了乙個零。
ostrstream::ostrstream( char*, int, int = ios::out );
// char* 是預分配的緩衝區,在那裡字元將結束
// int 緩衝區的大小
// int = ios::out 模式,如果預設,字元從緩衝區的開始位址格式化。
關於ostrstream,需要記住的一點:沒有為我們插入一般在字元陣列末尾所需要的零終止符。當我們準備好零終止符時,用特別操縱運算元ends。
C 輸入輸出流
一 c 流的概念 在c 語言中,資料的輸入和輸出 簡寫為i o 包括對標準輸入裝置鍵盤和標準輸 出裝置顯示器 對在外存磁碟上的檔案和對記憶體中指定的字串儲存空間 當然可 用該空間儲存任何資訊 進行輸入輸出這三個方面。對標準輸入裝置和標準輸出設 備的輸入輸出簡稱為標準i o,對在外存磁碟上檔案的輸入輸...
C 輸入 輸出流
一 流低階i o功能 如無格式的i o 通常指大量的位元組在裝置到記憶體或記憶體到裝置的簡單傳輸。高階i o功能 格式化i o 它將位元組組合成有意義的單元,如資料型別。對於大容量檔案的處理,使用無格式的i o可獲得最佳的效能。二 成員函式get和getline 不帶引數值成員函式get 從指定的流...
C 輸入輸出流
在看c primer的時候,練習題7.31裡 std istream input std istream in std ostream output std ostream out const 分別是什麼意思啊,看的不是很懂能不能解釋一下 std istream sales item input s...