cin.ignore()函數的用法

來源:互聯網
上載者:User

標籤:

      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()函數的用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.