几个常用的c++ cin成员函数:
1.cin.get();
2.cin.get(字符);
3.cin.get(字符数组指针,要读取的最大字符数+1,结束字符(默认为‘\n’));
4.cin.getline(字符数组指针,要读取的最大字符数+1,结束字符(默认为‘\n’));
5.cin.gets(字符指针);
6.cin>>;
*************************************************************************************
1.cin.get()
此函数主要用来舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足.;
当然也可用来读取字符—ch=cin.get(),等价于cin.get(ch);
可读取空格及回车;
2.cin.get(字符)
此函数的返回值是一个iostream对象,相当于cin;可进行连级输入—cin.get(a).get(b);
可读取空格及回车;
3.cin.get(字符数组指针,要读取的最大字符数+1,结束字符(默认为‘\n’))
此函数与cin.getline()参数相同,功能也差不多;
唯有一个区别:
get遇到 '\n '字符后便返回,这时 '\n '还在缓冲区中,所以下次读出来的将是 '\n ';
注:如果不舍去缓冲区中的‘\n’,下次使用get(有参)读取时,会读取‘\n’并将它继续留在缓冲区,
即此次读取,字符数组中没有得到任何字符;
而getline遇到 '\n '也返回,但它会把 '\n '从缓冲区里移除掉 所以很多时候用getline方便些
*********************************************************************************************
以下是代码及运行结果:
由于使用cin.get(name1,15)后没有舍弃缓冲区内的‘\n’,所以当执行cin.get(address1,15)时,直接读取缓冲区的‘\n’,而不能从键盘上读取字符串;运行结果为:
如在cout << "name:" << name1;与char address1[15];之间加上cin.get();
则会舍弃掉输入name后按下的换行符,则程序运行结果为:
4.cin.getline()使用方法同cin.get(),只不过不用舍弃换行符,既不用加上cin.get();
**************************************************************************************
5.cin.gets(字符指针)从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的字符串存到字符指针里;EOF在windows系统中为“enter--ctrl+z--enter”;
*************************************************************************************************************************
6.cin>>
a.输入字符串:
当输入字符串时,运算符“>>”的作用是跳过空白,读入后面的非空白字符,
直到遇到另一个空白字符为止,并在串尾放一个字符‘\0’。
例:
char *str;
cin>>str;
当输入csdn snow 时;str指向的字符串为csdn;即cin>>只读取到了空白符(空格,回车等)之前的字符串,snow仍然在缓冲区内;
b.一般情况下:(非字符串输入)
运算符“>>”将跳过空白符,然后读入后面的与变量类型相对应的值。
因此,给一组变量输入值时可用空白符(空格、回车或Tab键)将键入的数值间隔开。
即cin>>不能读取空格及回车,不能用cin>>ch;while(ch!='\n')作为循环终止判断条件;
例:
int i;
char c;
cin>>i>>c;
输入时可 2 x(回车);
或是:2(回车)x(回车);
****************************************************************************
目前了解的就这么多,希望能对大家有所帮助,要是有什么问题可以随时留言。