標籤:
cin.ignore(a,ch)方法是從輸入資料流(cin)中提取字元,提取的字元被忽略(ignore),不被使用。每拋棄一個字元,它都要計數和比較字元:如果計數值達到a或者被拋棄的字元是ch,則cin.ignore()函數執行終止;否則,它繼續等待。它的一個常用功能就是用來清除以斷行符號結束的輸入緩衝區的內容,消除上一次輸入對下一次輸入的影響。比如可以這麼用:cin.ignore(1024,‘\n‘),通常把第一個參數設定得足夠大,這樣實際上總是只有第二個參數‘\n‘起作用,所以這一句就是把斷行符號(包括斷行符號)之前的所以字元從輸入緩衝(流)中清除出去。
eg.
#include <iostream>using namespace std;void main(){ int a, b, c; cout << "input a:"; cin >> a; cin.ignore(1024, ‘\n‘); cout << "input b:"; cin >> b; cin.ignore(1024, ‘\n‘); cout << "input c:"; cin >> c; cout << a << "\t" << b << "\t" << c << endl;}
如果沒有cin.ignore(),可以一次輸入3個數,用空格隔開就好了。。可是非常不美觀。。這樣才是我們想要的。
如果cin.ignore()不給參數,則預設參數為cin.ignore(1,EOF),即把EOF前的1個字元清掉,沒有遇到EOF就清掉一個字元然後結束,會導致不正確的結果,因為EOF是檔案結束標識呵。
#include<iostream> using namespace std;void main(){ char str1[30], str2[30], str3[30]; cout << "請輸入你的姓名:"; cin >> str1; cout << "請輸入你的住址:"; cin.ignore(); cin.getline(str2, 30, ‘a‘); cout << "請輸入你的籍貫:"; cin.ignore(); cin.getline(str3, 30); cout << str3;}
如果在地址那裡輸入bcdabcd那麼此時流裡面剩的是bcd\n,此時cin.ignore();吃掉的就是b了,這是流裡還剩下cd\n直接交給cin.getline(str3,30);應為有個\n所以這裡getline就直接返回 .
cin.ignore()函數的用法