一、getline和get()的使用区别:
首先这两个函数都读取下一行输入,直到到达换行符;但是getline()函数会丢弃换行符,而get()将换行符保留在输入序列中
二、getline()函数的使用方法:
getline()函数读取整行,它使用通过回车输入的换行符来确定输入结尾。要调用这种方法,可以使用cin.getline()。该函数有两个参数,第一个参数是用来存储输入行的数组的名称,第二个参数是要读取的字符数。同时getline()成员函数在读取指定数目的字符或遇到换行符时停止读取。
#include <iostream> using namespace std; int main() { const int HH=20; char name[HH]; char dessert[HH]; cout<< "Enter you name:\n"; cin.getline(name,HH); cout<<"Enter your favorite dessert:\n"; cin.getline(dessert,HH); cout<<" I have some delicious "<<dessert; cout<<" for you, "<< name << ".\n"; return 0; }
三、get()函数的使用:它的参数形式和getline()函数一样,不同之处就是它并不再读取并丢弃换行符,而是将他留在输入队列中。由于第一次调用后,换行符将留在输入队列中,因此第二次调用时看到的第一个字符便是换行符,因此get()认为已达到行尾,而没有发现任何可读取的内容。如果不借助帮助,get()将不能跨过换行符,但是可以使用不带任何参数的cin.get()调用可读取下一个字符(即是换行符)
#include <iostream> using namespace std; int main() { const int HH=20; char name[HH]; char dessert[HH]; cout<< "Enter you name:\n"; cin.get(name,HH).get(); cout<<"Enter your favorite dessert:\n"; cin.get(dessert,HH).get(); cout<<" I have some delicious "<<dessert; cout<<" for you, "<< name << ".\n"; return 0; }