C++中cin

C++中的输入缓冲区,当我们从键盘输入字符串的时候,需要敲一下回车才能将这个字符串输入到缓冲区中,敲入的这个回车键会被换成换行键,这个换行符也同样存储在缓冲区中。

cin读取数据是从缓冲区中读取数据的,如果缓冲区为空,cin的成员函数会阻塞等待数据的到来,一旦缓冲区中有数据,就会触发cin的成员函数去读取数据。

cin>> 可以从键盘读取想要的数据,以空格,tab键,以及换行来作为分隔符(分隔符的存在是必要的,因为如果没有分隔符,就不能区分这些数据中的那部分是给这个变量,那部分是给另外的变量,当然也可以指定分隔符了)。

需要注意的是,当从缓冲区中读入数据的时候,如果缓冲区的第一个字符是空格,tab键,以及换行这些分隔符的时候,cin>>会将其忽略掉并从缓冲区中清除,继续读取下一个字符,如果缓冲区为空,那么cin会继续等待,如果读取成功,字符后面的分隔符是残留在缓冲区中的,cin>>不做处理。

cin.get()函数有多种函数重载的形式,可以读取单个字符或者是一行数据,不过,对于空格,tab键,以及换行这些分隔符,是不做处理的,会当成一个字符对待。

相对应的,std命名空间中也有一个getline方法,遇到换行符就终止,并且将换行符中缓冲区中删除,不影响下面的处理。

cin.get()读取一行的时候,只能将字符串读入C风格的字符数组中,但是getline可以将字符串读入到string类型中,

cin.getline()读入一行数据,上面已经提到过了,和cin.get()读入一行的方式相比,cin.getline()不会将换行符残留在缓冲区中。

 

posted @ 2017-11-23 19:55  niudong  阅读(2246)  评论(0编辑  收藏  举报