c语言getline函数什么意思,getline函数(精华版)详解

本文详细解析了 C++ 中的 getline 函数,包括全局函数和 istream 成员函数的用法,以及如何根据限定符和字符个数读取字符串。通过示例展示了 getline 在不同情况下的行为,并探讨了其在遇到文件结束符时的处理方式,以及可能存在的疑问和源码分析。
摘要由CSDN通过智能技术生成

在我的印象中,getline函数经常出现在自己的视野里,模糊地记得它经常用来读取字符串

。但是又对它的参数不是很了解,今天又用到了getline函数,现在来细细地总结一下:

首先要明白设计getline函数的目的,其实很简单,就是从流中读取字符串。而且读取的方

式有很多,包括根据限定符,根据已读取的字符的个数。从这个函数的名称来看,它的直观

意义是从流中读取一行,但是大家不要被这表面的现象所迷惑。其实如果让我来为这个函数

去一个名字的话,或许我会取一个getString,因为它的目的本来就是从流中读取字符的序

列,而不是像get函数那样一次读取一个字符。

另外要注意,C++中有两个getline函数,一个是在string头文件中,定义的是一个全局的

函数,函数声明是istream& getline ( istream& is, string& str, char delim )与

istream& getline ( istream& is, string& str );另一个则是istream的成员函数,函

数声明是istream& getline (char* s, streamsize n )与istream& getline (char*

s, streamsize n, char delim );注意第二个getline是将读取的字符串存储在char数组

中而不可以将该参数声明为string类型,因为C++编译器无法执行此默认转换。

下面根据一个例子简单地介绍一下该函数:

test.txt文件如下所示:

a

bcd

e

fgh

i

jk

现在先尝试全局函数getline。从函数声明中我们观察到两种函数声明的不同主要体现在参

数的个数上,如果是两个参数的话,那么默认的限定符便是‘\n’了,但是如果声明了限

定符,'\n'是否仍然有效呢?我写了如下程序做测试:

int main(){

int n = 6;

string tem;

ifstream infile("test.txt");

for(int i = 0;i

//getline(infile,tem);

getline(infile,tem,'\t');

cout<

}

return 0;

}

输出结果是:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值