cin.ignore()函數的用法


     

      功能:函數用於輸入流。它讀入 字符,直到已經讀了num 個字符(默認為1)或是直到字符delim 被讀入(默認為EOF).其調用形式為cin.ignore(n,終止字符)
      原型:istream &ignore( streamsize num=1, int delim=EOF );
      函數作用是跳過輸入流中n個 字符,或在遇到指定的終止字符時提前結束(此時跳過包括終止字符在內的若干字符)。
程序舉例:
#include <iostream>
using namespace std;
int main()
{
char array[8];
cin.ignore(6,'a');
cin.getline(array, 8);
cout << array << endl;
return 0;
}

輸入:bcdefgk 輸出:k

輸入:bcagkld 輸出:gkld

它還可以這樣用:cin.ignore();即不帶參數;此時 默認參數為1.

     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就直接返回 .


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM