一直纠结怎么区分getline(), fgets(),gets()以及C语言中得getline()函数,今天稍微整理一下。

1.c++中得getline()函数:

这个使用的是string 的IO操作实现的。这个函数接受两个参数(也可以是3个参数,第三个参数是读取的分割符),一个是输入流对象,一个是string对象。

原型:

包含在头文件

istream& getline ( istream& is, string& str, char delim );

istream& getline ( istream& is, string& str );

如果getline函数有两个参数,那么默认的分隔符就是'\n'。

这个函数的的返回值是istream对象。判断返回值的时候,就是看流的状态是否正常。如果使用for/while循环等来编写代码的话,那么只要以getline函数作为检查循环是否继续的条件的话,那么只要流是正常的就可以无限循环,除非使用 ctrl + z,或者EOF回车终止读入(注意:直接键入回车换行符是不行的:   因为getline函数是读取到回车换行时,就会终止本次读取。如果第一个键入的字符就是回车换行,那么就会string对象就会被设置为空)。

如c++ primmer中得例子,程序不会跳出循环直到输入: ctrl + z/c 或者EOF回车。int main()

{

string line;

// read line at time until end-of-file

while (getline(cin, line))

cout <

return 0;

}

对于三个参数的原型,就不多说了,直接来个例子:int main()

{

string strLine = "";

int i = 0;

while (getline(cin , strLine, '@'))

{

cout <

}

return 0;

}

123

344

167#

@

the 0 line is : 123

344

167#

@

the 1 line is :

@@

the 2 line is :

the 3 line is :

Q

W

@

the 4 line is :

Q

W

2.C语言中得getline:

函数声明:

ssize_t getline(char **lineptr, size_t *n, FILE *stream);

返回值

成功:返回读取的字节数。

失败:返回-1。

参数:

lineptr:指向存放该行字符的指针,如果是NULL,则有系统帮助malloc,需要在使用完成后free释放。

n:如果是由系统malloc的指针,请填0

stream:文件描述符

例子:#include

#include

int main()

{

FILE *MyFile = NULL;

char *cContent = NULL;

size_t iBufSize = 0;

ssize_t iCount = 0;

MyFile = fopen("./test.txt", "r");

if (MyFile == NULL)

{

printf("open file failed\n");

return -1;

}

while ((iCount = getline(&cContent, &iBufSize, MyFile)) != -1)

{

printf("length is :%zu\n", iCount);

printf("content is :%s\n", cContent);

}

if (cContent)

free(cContent);

return 0;

}

文本:

结果:

c语言getline作用,C/C++中常用的getline函数相关推荐

  1. c语言定义小数无穷小,OC中常用的数学函数以及浮点处理函数

    在编程中我们总要进行一些数学运算以及数字处理,尤其是浮点数的运算和处理,这篇文章主要介绍C语言下的数学库.而其他语言中的数学库函数的定义以及最终实现也是通过对C数学库的调用来完成的,其内容大同小异,因 ...

  2. c语言insert作用,C++string中的insert()插入函数详解

    下面通过代码给大家介绍c++  string insert() 函数,具体内容如下: basic_string& insert (size_type pos, const basic_stri ...

  3. c语言中常用的字符函数以及字符串函数

    文章目录 前言 一.常用字符串函数 1.strlen() 2.strcpy() 3.strcat() 4.strcmp() 5.strstr() 6.memcpy() 6.memmove() 二.qs ...

  4. php的正则表达式函数,php中常用的正则表达式函数

    php中常用的正则表达式函数 * preg_match() * preg_match_all() * preg_replace() * preg_filter() * preg_grep() * pr ...

  5. OpenGL中常用的 GLUT 函数

    GLUT函数说明 一.初始化 void glutInit(int* argc,char** argv) 这个函数用来初始化GLUT库.对应 main 函数的形式应是: int main(int arg ...

  6. 字符串中常用的系统函数(strcat , strcmp , strcpy,strlen )

    字符串中常用的系统函数 (strcat 连接, strcmp 比较, strcpy 拷贝,效果相当于赋值,strlen 求有效字符个数) 1.strcat 函数 strcat 函数即字符串连接函数,其 ...

  7. java数据类型的转换函数_JAVA中常用数据类型转换函数

    JAVA中常用数据类型转换函数: string->byte Byte static byte parseByte(String s) byte->string Byte static St ...

  8. MySQL中常用日期时间函数及获得

    MySQL中常用日期时间函数: 下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DA ...

  9. 数据分析中常用的 Excel 函数

    这里就开门见山啦!其实大家在数据分析工作中常用的的函数都差不多,做个总结,希望对入门或者转行的小伙伴可以有所帮助. 数据分析中常用 excel 函数: 本篇文章主要给大家分享几常用的excel功能.建 ...

最新文章

  1. java多线程消息队列_java多线程消息队列的实现
  2. P1449 后缀表达式
  3. debian9升级安装到python3.6和pip3.6
  4. 华为手机微信网络连接到服务器失败怎么办,微信H5支付在华为手机里报错 网络环境未能通过安全验证,请稍后再试 怎么解决啊 试了好多方法也不行...
  5. UDP成为低延时流媒体关键 选SRT还是QUIC?
  6. mysql 统计 邮箱_mysql查询之 连续出现的数字,重复出现的邮箱,删除重复的电子邮箱...
  7. Redis之运维细节
  8. 宽字节与多字节之间的转换
  9. windows ping 间隔_对于常用的ping命令,这些小技巧你不一定知道
  10. 深度卷积神经网络的过程详解——综述
  11. 云上游戏数据分析实践
  12. SVN报错:can't open file db/txn-current-lock:permission denied 解决方法
  13. cf1292 C. Xenon's Attack on the Gangs
  14. 晶联讯JLX12864G-086-PC-3S LCD显示屏 C51驱动代码
  15. 腾讯2019技术岗笔试 小Q非常喜欢复读,有时候,小Q会得到某个字符串S。这时他会把s不断重复不断重复连成一个无限长的串。比如说,小Q现在得到一个串abc,他会直一复读, 那么形成的字符串就是:
  16. 数据库的连接 SQL Joins
  17. BAT后台开发 两年工作经历总结
  18. 脚本调度-sqoop导出分区表-判断分区目录是否存在
  19. wow工作室脚本_魔兽世界8.0工作室脚本采药大队重出江湖 整齐划一宛如赶尸队...
  20. 【u8+】调账提示:此分录已两清,不能删除或修改

热门文章

  1. ajax 实现总价刷新,jQuery实现购物车的总价计算和总价传值功能
  2. Win10如何显示文件后缀名?显示后缀名的简单方法
  3. 部署微信公众号项目的基本步骤
  4. IList(T) 方法
  5. 微信平台中嵌入课程直播的有效方法
  6. 苹果天气不显示_苹果自带闹钟这么神?用了5年iPhone才知道,懂的人绝不会卸载它...
  7. 线程池的线程复用原理
  8. scala反转字符串_Scala程序反转字符串
  9. 年产能扩大至1亿片!歌礼公布新冠口服药研发进度;上海首家康莱德酒店正式开业|美通社头条...
  10. C语言之数组的定义及其使用方法