cin.ignore与cin.getline都是属于istream流的成员函数,具体用法百度上都有,下面我写下关于这两个函数的体验:

首先分别定义两个字符数组和一个×××变量:

char  str1[100],str2[100];

int a;

cin>>a;

cin.ignore();

cin.getline(str1,100);

cin.ignore();

cin.getline(str2,100);

输入:

2

abcd

cdef

输出:

str1:abcd

str2:def

如果注释掉代码中的第二行

输入:

abcd

cdef

输出:

str1:bcd

str2:def

 

本例中ignore函数只清除cin流中 的第一个字符所以在未注释代码前代码中第一个ignore函数会清空当前流中的内容,所以str1能够正常输出。然而str2的第一个字符却被清除,而且ignore函数在cin.getline(str2,100)的前面……ignore函数会清除流中的第一个字符,由此猜想cin.getline()会清除当前输入的内容。如果当前流中为空则会作用与后来输入的数据,在注释掉代码后的输入输出数据或许就是个证明。

有说的不对的地方请指正!谢谢^_^