初学C++者,都使用cin来完成字符串的输入,但是有一个弊端就是cin只能读取一个单词,不能实现连续的输入,这里简单介绍两个可以连续输入的函数get()和getline(),在istream类中(如cin)提供了这两个面向行的类成员函数;
两个函数都是面向行的输入.
函数getline()调用方法为cin.getline();该函数有两个参数,第一个为用来存储字符串的缓冲区,第二个为要读取的字符数,如果参数为10,则函数最多读取9个字符,剩余的空间自动存储结尾空字符,getline()成员函数在读取指定数目的字符或遇到换行符(回车)时停止读取.该函数每次读取一行,他通过换行符来确定行尾,但不保存换行符,相反,在存储字符串时,用空字符替换换行符.
示例: cin.getine(name,10);
函数get()有几种版本,其中一种版本的工作方式与getline()类似,参数相同,解释参数的方式也相同,并且都读取到行尾,但get并不丢弃换行符,而是将其留在输入队列中,当我们两次调用get()函数
cin.get(name , size);
cin.get(info , size); // a problem
由于第一次调用后,换行符将留在输入队列中,因此第二次调用时看到的第一个字符便是换行符,因此get()认为已经到行尾,而导致没有读取到任何内容,这时需要借助另外一个版本来解决,即不带任何参数的get()函数,如下
cin.get(name , size);
cin.get();
cin.get(user , size);
或者合体版
cin.get(name , size).get();
cin.get(user , size);
之所以可以合体,是由于cin.get(name , size)返回的是一个cin对象,该对象随后见被用来调用get()函数.
初次写博客,欢迎批评指正!