我們在使用istream類的物件cin進行一行輸入的時候 往往遇到n多問題
比如我這樣做
char buf [100] ;
cin>>buf ;
cout《這時候如果我們輸入了 ddd ddd 那麼只會輸出 前三個ddd ,從而達不到我們預期的效果 這是因為流的設計是以空字元來結束提取的 ,空格是空字元 所以後面三個d就沒有提取到
buf中。
istream提供了 get 和getline 兩個函式進行行的讀取 ,但是在對於文字檔案的操作時候 ,我們無疑選用getline ,這是從他們的提取特性來分析的 。
get在遇到分隔符的時候(預設是換行) 就會停止讀取 ,並且以0結束 ,並且不會提取分隔符,分隔符仍保留在輸入流裡面,當下次再次呼叫cin.get()的時候那麼就會直接返回
而不會讀取任何資料,因為在讀取開始就遇到了分隔符的緣故 。
getline則不同 他在get的基礎上從輸入流中刪除了 分隔符 並且不儲存在結果buffer中 ,從而可以使我們不斷的讀取一行資料 。
流也提供了許許多多的函式進行功能的測試
!stream 過載了!來測試流是否正確
eof 是否到達檔案結尾
bad 是否錯誤
good是否正確 等等函式
clear 清空流 。。。。
read和wirte則可以對記憶體塊進行讀寫 我們可以清晰的看到細節部分
C 中利用輸入輸入流進行一行輸入
我們在使用istream類的物件cin進行一行輸入的時候 往往遇到n多問題 比如我這樣做 char buf 100 cin buf cout 這時候如果我們輸入了 ddd ddd 那麼只會輸出 前三個ddd 從而達不到我們預期的效果 這是因為流的設計是以空字元來結束提取的 空格是空字元 所以後面三個...
C 使用流進行輸入輸出
首先應用 include include1.進製讀寫 int val 10 十進位制數 cout 輸出8進製 輸出16進製制 輸出10進製 2.精度 double pi 3.141592658 cout 4 設定小數精確度,影響以下所有輸出 cout cout cout e 0003.對齊文字和設定...
C 使用流進行輸入輸出
首先應用 include include1.進製讀寫 int val 10 十進位制數 cout 輸出8進製 輸出16進製制 輸出10進製 2.精度 double pi 3.141592658 cout 4 設定小數精確度,影響以下所有輸出 cout cout cout e 0003.對齊文字和設定...