istream类中的函数
1.getline()函数
getline()函数读取整行(包括换行符),通过回车键输入的换行符输入结尾。
输入字符串可以使用cin.getline(),函数的第一个参数储存输入行数组的名称,第二个参数是要读取的字符数,在读取到指定字符或换行符时停止读取。例如cin.getline(name,20);可将姓名读取到包含20个元素的name数组中。
也可通过string类和getline()函数来读取,例如:
string str;
getline(cin,str);//这样不需要规定长度,系统会自动分配
下面的输入可以连续两行分别读入数组name1和name2中:
cin.getline(name1,size).getline(name2,size)//size表示大小
相当于调用两次getline()函数
2.get()函数
get()函数读取整行(不包括换行符),读取到行尾。get()函数不再读取并丢弃换行符。
但可以借助cin.get()处理换行符,例如:
cin.get(name, size);//size表示大小
cin.get();
cin.get(dessert,size);
另外还有一种使用get()的方式是将两个类成员连接起来:
cin.get(name,size).get();//这样也可以处理换行符。
两者区别:
getline()使用起来更简单些,get()检查错误更简单些。
可以用get()来知道读取停止是由于读取了整行还是数组已经填满,通过查看下一个字符来发现,若下一个字符是换行说明读取了整行,否则说明该行中还有其他输入。