1.cout.put():是一个重要的C++ OOP概念,可以代替“<<”操作符。
char a = 'M';
cout << a;
cout.put(a);
输出结果相同。
2.getline()
getline()函数读取整行,它使用通过回车键输入的换行符来确定输入结尾。
可以使用cin.getline()来调用这种方法。
getline()有两个参数,第一个参数是用来存储输入行的数组的名称,第二个参数是要读取字符数。如果这个字符数为20,则函数最多读取19个字符,余下的空间用于存储自动在结尾处添加的空字符。
getline()成员函数在读取制定数目的字符或遇到换行符时停止读取。如:
const int Size = 20;
char name[Size];
cin.getline(name, Size);
3.get()
cin.get面向行的输入。get()有几种变体,其中一种变体的工作方式与getline()类似,他们接受的参数相同,解释参数的方式也相同,并都是读取到行尾。
get()不再读取并丢弃换行符而是将其保留在输入队列中。假设两次调用get():
cin.get(name, Size);
cin.get(dessert, Size);
由于第一次调用后,换行符将留在输入队列中,因此第二次调用时看到的第一个字符便是换行符。因此get()认为已到达行尾,而没有发现任何可读取的内容。
get()有另一种变体。使用不带任何参数的cin.get()调用可读取下一个字符(即使是换行符),因此可以用来处理换行符,为读取下一行输入做好准备。也就是说可以采用如下方式:
cin.get(name, Size);
cin.get();
cin.get(dessert, Size);
get()另一种使用方式是将两个类成员函数拼接起来如下所示:
cin.get(name, Size).get();
之所以这样做是因为cin.get(name, Size)返回一个cin对象,该对象随后将被用来调用get()函数。同样下面的语句
cin.getline(name1,Size).getline(name2,Size);
将把输入中连续的两行分别读入到数组name1和name2中,其效果与两次调用cin.getline()相同。
示例代码:
#include <iostream>
#include <climits>
using namespace std;
int main()
{
const int TESTSIZE = 20;
char name[TESTSIZE];
char dessert[TESTSIZE];
cout << "Enter Your Name:" << endl;
cin.get(name, TESTSIZE).get();
cout << "Enter Your Favorite Dessert:\n";
cin.get(dessert, TESTSIZE).get();
cout << name << " - " << dessert << endl;
return 0;
}
运行如图所示:
将程序cin.get(name, TESTSIZE).get();中get()去掉,运行如下:
第二次无法输入。