C 中利用輸入輸入流進行一行輸入

2021-06-02 21:27:18 字數 714 閱讀 4699

我們在使用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.對齊文字和設定...