cin.ignore()函数的用法

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

时间: 2024-12-19 10:06:15

cin.ignore()函数的用法的相关文章

[转]cin.clear()、cin.sync()和cin.ignore()的用法

cin.clear()是用来更改cin的状态标识符的. cin.sync()是用来清除缓冲区的数据流的. 如果标识符没有改变那么即使清除了数据流也无法正常输入,反之亦然,因此两者要联合起来使用.下面是一个使用的例子: #include<iostream> using namespace std; int main() { int a; cout<<"输入一个字母:"<<endl; cin>>a; //int型变量中放了char型数据,fa

cin中函数的作用

cin是istream类的对象,它是从标准输入设备(键盘)获取数据,程序中的变量通过流提取符">>"从流中提取数据.流提取符">>"从流中提取数据时跳过输入流中的空格.tab键.换行符等空白字符.注意:只有在输入完数据再按回车键后,该行数据才被送入键盘缓存区,形成输入流,提取运算符">>"才能从中提取数据.需要注意保证从流中读取数据能正常运行.  例如: int a,b;        cin>>a

C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法(转)

学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行) 1.cin 2.cin.get() 3.cin.getline() 4.getline() 5.gets() 6.getchar() 附:cin.ignore();cin.get()//跳过一个字符,例如不想要的回车,空格等字符 1.cin>>          用法1:最基本,也是最常用的用法,输入一个数字: #includ

C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法

C++中cin.cin.get().cin.getline().getline().gets()等函数的用法 学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行) 1.cin 2.cin.get() 3.cin.getline() 4.getline() 5.gets() 6.getchar() 附:cin.ignore();cin.get()//跳过一个字符,例如不想要的回车,空

cin.ignore()的用法 cin.clear() cin.setstate()

cin.ignore() basic_istream& ignore(streamsize _Count = 1, int_type _Delim = traits_type::eof());function: Causes a number of elements to be skipped from the current read position.Parameters:_Count, The number of elements to skip from the current read

Template function 函数模板用法

#include<iostream> using namespace std; const double PI = 3.1415926; template <class T> T min(T a[], int n){ int i; T minv = a[0]; for (i = 1; i < n; i++){ if (a[i] < minv) minv = a[i]; } return minv; } template<class T1> double Ci

C++ cin.ignore()

在说ignore前说一下cin这个I/O输入关键字. cin要求用”回车“来提交数据!!!!!----------这个十分重要! #include<iostream> using namespace std; void main(){ int a; cin.ignore(1,'\n'); cin>>a; cout<<a<<endl; int b; cin.ignore(2,'\n'); cin>>b; cout<<b<<e

select函数简单用法例程

在<The Linux Programming Interface>的 63.2.1 The select() System Call中讲述了 select() 函数的用法 下面是原型: 1 #include <sys/time.h> /* For portability */ 2 #include <sys/select.h> 3 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *excep

深入了解scanf/getchar/gets/cin等函数

scanf(), getchar()等都是标准输入函数,一般人都会觉得这几个函数非常简单,没什么特殊的.但是有时候却就是因为使用这些函数除了问题,却找不出其中的原因.下面先看一个很简单的程序: 程序1: #include <stdio.h> int main() { char ch1, ch2; scanf("%c", &ch1); scanf("%c", &ch2); printf("%d %d/n", ch1, c