C++ getline():从文件中读取一行字符串

前一节中,详细介绍了如何使用 getline() 方法从 cin 输入流缓冲区中读取一行字符串。在此基础上,getline() 方法还适用于读取指定文件中的一行数据,本节就给大家做详细的讲解。

我们知道,getline() 方法定义在 istream 类中,而 fstream 和 ifstream 类继承自 istream 类,因此 fstream 和 ifstream 的类对象可以调用 getline() 成员方法。

当文件流对象调用 getline() 方法时,该方法的功能就变成了从指定文件中读取一行字符串。该方法有以下 2 种语法格式:

istream & getline(char* buf, int bufSize);
istream & getline(char* buf, int bufSize, char delim);

其中,第一种语法格式用于从文件输入流缓冲区中读取 bufSize-1 个字符到 buf,或遇到 \n 为止(哪个条件先满足就按哪个执行),该方法会自动在 buf 中读入数据的结尾添加 ‘\0’。

第二种语法格式和第一种的区别在于,第一个版本是读到 \n 为止,第二个版本是读到 delim 字符为止。\n 或 delim 都不会被读入 buf,但会被从文件输入流缓冲区中取走。

以上 2 种格式中,getline() 方法都会返回一个当前所作用对象的引用。比如,obj.getline() 会返回 obj 的引用。
注意,如果文件输入流中 \n 或 delim 之前的字符个数达到或超过 bufSize,就会导致读取失败。

举个例子:

#include <iostream>
#include <fstream>
using namespace std;
int main()
{char c[40];//以二进制模式打开 in.txt 文件ifstream inFile("in.txt", ios::in | ios::binary);//判断文件是否正常打开if (!inFile) {cout << "error" << endl;return 0;}//从 in.txt 文件中读取一行字符串,最多不超过 39 个inFile.getline(c, 40);cout << c ;inFile.close();return 0;
}

假设 in.txt 文件中存有如下字符串:

http://c.ttt.net/cpl/

则程序执行结果为:

http://c.ttt.net/cpl/

当然,我们也可以使用 getline() 方法的第二种语法格式。例如,更改上面程序中第 15 行代码为:

inFile.getline(c,40,'c');

这意味着,一旦遇到字符 ‘c’,getline() 方法就会停止读取。 再次运行程序,其输出结果为:

http://

另外,如果想读取文件中的多行数据,可以这样做:

#include <iostream>
#include <fstream>
using namespace std;
int main()
{char c[40];ifstream inFile("in.txt", ios::in | ios::binary);if (!inFile) {cout << "error" << endl;return 0;}//连续以行为单位,读取 in.txt 文件中的数据while (inFile.getline(c, 40)) {cout << c << endl;}inFile.close();return 0;
}

假设 in.txt 文件中存有如下数据:
http://c.ttt.net/cpl/
http://c.ttt.net/c++/
http://c.tt.net/php/

则程序执行结果为:
http://c.ttt.net/cpl/
http://c.ttt.net/c++/
http://c.tt.net/php/

C++ getline():从文件中读取一行字符串相关推荐

  1. 字体文件解析 c语言,如何正确地从C语言的文件中读取某些字符串?

    您试图从文件中读取的内容并不简单,但可以通过设置一个标志来处理,该标志告诉您是否已经看到 'a' 或 'b' ,跳过所有空白和 ':' 字符,将所有其他字符存储在缓冲区中,根据需要重新分配,然后在第二 ...

  2. linux posix支持中文,如何在Linux中使用POSIX方法从文件中读取Unicode-16字符串?

    我有一个包含UNICODE-16字符串的文件,我想将其读入Linux程序.字符串是从Windows的内部WCHAR格式原始编写的. (Windows是否总是使用UTF-16?例如日文版) 我相信我可以 ...

  3. python 压缩文件 调用7z_Python:如何从Python压缩的7z文件中读取一行?

    (详细介绍收益率部分)注意,我不知道这个库,也不知道你用什么函数来获取未压缩的数据块.但我的意思是:def 7zreadline(filename): with open(filename, 'rb' ...

  4. java文件替换一行数据_用Golang替换文件中的一行

    我是Golang的新手,从一些例子开始 . 目前,我要做的是逐行读取文件,并在满足特定条件时将其替换为另一个字符串 . 该文件用于测试目的包含四行: one two three four 处理该文件的 ...

  5. Tensorflow 从bin文件中读取数据并

    Tensorflow 程序读取数据一共有3种方法: 供给数据(feeding):在程序运行的每一步,让Python代码来供给数据 从文件读取数据: 让一个输入管线从文件中读取数据 预加载数据:在ten ...

  6. c语言把一个字符从指定文件中读取的函数,C语言中对文件最基本的读取和写入函数...

    C语言中对文件最基本的读取和写入函数 C语言read()函数:读文件函数(由已打开的文件读取数据)头文件: #include 定义函数: ssize_t read(int fd, void * buf ...

  7. python读取日期_从文件中读取日期和数据(Python)

    我想从文件中读取时间字符串和数据,但是当我使用loadtxt时,我不能同时读取字符串和数字,因为字符串不是浮点型的.所以我尝试使用genfromtxt并使用delimiter=[]+[]+[]作为我所 ...

  8. 如何用c语言从txt文件中读取数据

    用C语言从txt文件中读取数据,可以使用C标准库文件自带的文件接口函数进行操作. 一.打开文件: FILE *fopen(const char *filename, const char *mode) ...

  9. python读取一行的函数_Python linecache.getline()读取文件中特定一行的脚本

    Python linecache.getline()读取文件中特定一行的脚本 比如: Code highlighting produced by Actipro CodeHighlighter (fr ...

最新文章

  1. 【数据挖掘】贝叶斯分类 ( 贝叶斯分类器 | 贝叶斯推断 | 逆向概率 | 贝叶斯公式 | 贝叶斯公式推导 | 使用贝叶斯公式求逆向概率 )
  2. 使用EL表达式接收url的传值
  3. api可以主动采集用户数据吗_模拟量数字量采集卡之EC-8001篇
  4. ArrayBlockingQueue中的方法
  5. 1091 N-自守数
  6. 32 引脚_函数功能:定时器T0的中断服务子程序,使P3.7引脚输出音频方波
  7. 【转载】生机勃勃的秋菊freeeim
  8. 程序员想早点下班被经理拒绝,一气之下要辞职,经理慌了
  9. c mvc html 选中删除,在 MVC htmlAttribute中,如何设置被禁用_CSharp_开发99编程知识库...
  10. 新编计算机英语,新编计算机英语教程
  11. ideal如何快速导入import_Vue性能优化:如何实现延迟加载和代码拆分?
  12. OAuth1.0a的使用例(RFC5849 1.2节的中文翻译)
  13. linux下shell程序(一)
  14. 记录:Ftrace/systrace 功能使用
  15. [jzoj NOIP2018模拟11.02]
  16. 快速修改Windows系统字体样式
  17. Arduino 用Proteus仿真基础知识和实例
  18. UltraISO(软碟通) v8.2.0.1669 十分不错,感觉比WinISO强大些
  19. Civil2019程序安装及注意事项
  20. windows_7_ultimate_with_sp1_x64位旗舰版

热门文章

  1. Typora自定义主题#简约风主题
  2. 算法刷题记录(Day 33)
  3. 《丑奴儿》——看庭审刘志军
  4. pythonset是什么意思_Python 中 set 是什么?为何要是用它?
  5. 什么是浏览器跨访问操作,js如何实现
  6. Adobe Dreamweaver CC 2020中文版
  7. 腾讯云GPU渲染型应用场景,腾讯云GPU实例类型,快速操作入门指南
  8. 男导师的妻子叫“师母”,那么女导师的丈夫怎么称呼?
  9. 概率论与数理统计--知识点
  10. 消耗cpu资源的脚本