乙個控制輸入的內容可以看做事乙個檔案的資訊
int i=0;
int tmp[
100]
; cin >> tmp[i]
;while
(i<
100&&
!cin.
eof())
for(
int j =
0; j < i; j++
)
上面程式可以多次寫入,也可以一次性寫入。
1.多次寫入:
每次寫入乙個整數回車,就可以再控制台連續多次輸入資料,最後ctrl+z新增輸入結束符,結束輸入資料。
2.一次寫入:
一次性寫入多個資料最後加上輸入結束符(1 2 3 4 5 ^z),與上是同樣的效果。
int i=0;
int tmp[
100]
; ifstream infile;
infile.
open
("input.txt");
infile >> tmp[i]
;while
(i<
100&&
!infile.
eof())
for(
int j =
0; j < i; j++
)
在檔案中寫入多個資料最後加上輸入結束符(1 2 3 4 5 ),都可以輸出同樣的效果。
總結:因此可以看出乙個控制台的輸入流可以看做是乙個輸入檔案,只是控制台的「輸入檔案」在結尾處沒有結尾標誌ios::badbit 001 輸入(輸出)流出現致命錯誤,不可挽回 (檔案受損或者硬體故障)
ios::eofbit 010 已經到達檔案尾
ios::failbit 100 輸入(輸出)流出現非致命錯誤,可挽回 (如讀取型別中發生型別不匹配或者遇到eof時返回true)
ios::goodbit 000 流狀態完全正常, 各異常標誌位都為0 (注:good() 該方法在沒有發生任何錯誤時返回true)
因為乙個控制台輸入流可以看做是乙個檔案的輸入,所以檔案輸入和控制台輸入出現的四個標誌位可以相同的去看待
1. 在有輸入的程式中,在執行程式的時候想讓其控制台不立刻消失會加兩個cin.get(),原因就是控制台的輸入流中還有乙個換行符沒有讀取,所以需要乙個cin.get()讀取其中的換行符。cin 讀取乙個char時,會省略輸入流中的空格和換行符;
get() 相當於c語言中的getchar,可以讀取輸入流中的空格和換行符;cin>>ch 方法可以輕鬆的跳過這些換行符,但是對於cin.get(ch)還會讀取字元後輸入流中還存在換行符;
getline() 讀取可以讀取乙個字串。並忽略輸入流中的換行符
寫程式時,應當時刻思考輸入流的狀態
如果接受到錯誤的輸入即cin.fail,則必須使用了那個cin.clear()重置輸入,然後還需要通過讀取不合法的輸入開丟棄它們。
double factor;
while(!
(cin>>factor)
)//判斷是否為合法的輸入
statement;
//對於正確輸入factor的處理
cin是乙個istream類的物件,使用cin作為輸入時(例如 cin>>factor)會返回乙個istream值,即cin,根據輸入是否成功,被轉換為bool值false或true C 的標準輸入
昨天做題的時候,遇到乙個輸入是這樣的 3 4aaaa aaaa aaaa bbbbbbb bbbb ccc cccccccc d第一行輸入乙個整數n,表示接下來句子的數量,和另外乙個整數 這裡沒有作用,只是用來說明下面的乙個情況 接下來就是n個句子,每個句子以回車結束。我的想法是 int i,j c...
C 的字元輸入
字串的輸入有6中方式,這六種方式各有各的特點,我這篇學習筆記是自己的經驗總結,沒有去 記憶體,函式庫等的複雜問題,僅僅是為了實用 第一 cin cin一次接受乙個字元,所以有的人會選擇定義乙個字元型陣列,然後用cin迴圈進行輸入,但是cin的侷限性是 遇到空格就會停止接受字元 第二 ch1 cin....
C語言的輸入
pta有關字串輸入的問題老是記不清楚,在這裡記錄一下。c語言中,strlen函式用於求字串的長度。strlen從字元開頭算起,直到 0 為止,返回計數器的值,數值不包括 0 1 include2 include 3using namespace std 45 6int main 8size t le...