get()和getline()函数

要获取一行输入,有两种选择:成员函数get()或getline()。

两个函数都有三个参数:指向存储结果字符的缓冲区指针、

缓冲区大小(不能超过其限度)和停止读输入的终止符。

终止符有一个经常用到的缺省值”\n”。两个函数遇到输入

终止符时,都把零储存在结果缓冲区里。


其不同点是,get()遇到输入流的分隔符就停止,而不从输入流中提取分隔符。

如果用同样的分隔符再调用一次get()函数,它会立即返回而不带任何输入。

getline与其相反,它从输入流中提取分隔符,但仍没有把它储存到结果缓冲区里。

get有三种其它的重载版本:一个没有参数表,返回下一个字符,用的是一个int返回值;

一个把字符填进字符参数表,用一个引用;一个直接存储在另一个输入输出流对象的基本缓冲区结构里。


除没有参数表的get()外。所有get()和getline()的版本都返回字符来源的输入流,

没有参数表的get()返回下一个字符或EOF。如果取回输入流对象,要询问一下它是否正确,

我们可以用成员函数good()、eof()、fail()和bad()询问任何输入输入流是否正确。

下面程序说明了get()和getline()之间的区别:

#include 
#include 
#include 
using namespace std;

#define SZ 100		//buffer size


int main() {
	char buf[SZ];
	{
		ifstream in("strfile.cpp");	//read
		assert(in);
		ofstream out("strfile.out");	//write
		assert(out);
		int i = 1;		//line counter
		
		while(in.get(buf, SZ)) {	//不会从输入流中提取分隔符,即分隔符还在输入流中
			in.get();	//跳过分隔符
			cout << buf <




你可能感兴趣的:(C++)