对于C++字符串的输入,面向行的输入:get()函数。该函数有几种变体。其中一种变体的工作方式与getline()类似,它们接受的参数相同,解释参数的方式相同,并且都读取到行尾。但get并不再读取并丢弃换行符,而是将其留在输入队列中。假设我们连续两次调用get()函数。
//实例1
#include<iostream>
using namespace std;
int main()
{
const int ArSize = 20;
char name[ArSize];
char dessert[ArSize];
cout << "Enter your name:\n";
cin.get(name, 20);
cout << "Enter your favoriate dessert:\n";
cin.get(dessert, 20);
cout << "I have some delicious " << dessert;
cout << "for you " << name << ".\n";
return 0;
}
输出结果会发现输出不了dessert。如下图所示:
由于第一次调用后,换行符将留在输入队列中,因此第二次调用时看到的第一个字符。因此get()认为已到达行尾,而没有发现任何可读取的内容。如果不借助于帮助,get()函数将不能跨过该换行符。get()有另一种变体,使用不带任何参数的cin.get()调用可读取下一个字符(即使是换行符),因此可以用它来处理换行符,为读取下一行输入做好准备。如下实例
//实例2
#include<iostream>
using namespace std;
int main()
{
const int ArSize = 20;
char name[ArSize];
char dessert[ArSize];
cout << "Enter your name:\n";
cin.get(name, 20).get();
cout << "Enter your favoriate dessert:\n";
cin.get(dessert, 20).get();
cout << "I have some delicious " << dessert;
cout << "for you " << name << ".\n";
return 0;
}
输出结果为:如下所示。