【C++】输入流小结

浏览: 155 发布日期: 2016-11-27 分类: c++

几个常用的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(回车);

****************************************************************************

目前了解的就这么多,希望能对大家有所帮助,要是有什么问题可以随时留言。


返回顶部