作者:朱金灿

来源:http://blog.csdn.net/clever101

之前写了一个分析huson日志的控制台程序,其中涉及到C++逐行读取文本文件的做法,代码是这样写的:

ifstream file;
file.open(“C:\\hudson.log”);
char szbuff[1024] = {0};
while(!file.eof())
{
file.getline(szbuff,1024);
}

开始这段代码运行是没有问题的,但后来运行居然出现了死循环,上网查了下资料,发现原因是:当缓冲区不够大的时候,getline函数也会对缓冲区输入数据,但同时也会把ifstream的状态位failbit设置了,于是fail函数会返回true。于是上述代码会嵌入死循环,由于处于fail状态下的ifstream,其getline函数不会再读入任何数据,因此后续的getline调用没有效果,并且fail函数一直返回true。

正确的做法是:

#include <iostream>
#include <fstream>
#include <string> using namespace std; int main()
{
char *filePath = "E:\\test.txt";
ifstream file;
file.open(filePath,ios::in); if(!file.is_open()) return 0; std::string strLine;
while(getline(file,strLine))
{ if(strLine.empty())
continue; cout<<strLine <<endl;
} }

参考文献:

1. getline的获取ifstream的数据

C++逐行读取文本文件的正确做法的更多相关文章

  1. php 逐行读取文本文件

    在读取文本时,我们要注意一个事情,那就是换行符,应为我们在写文档时会手动换行,这个换行符需不需要保存就要看自己的需求了. 这里封装了两个方法,一个保留换行,一个不保留.$path为文件路径+文件名 1 ...

  2. 使用LineNumberReader逐行读取文本文件

    代码(1.8的语法): import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOExcept ...

  3. 别再用"while (!feof(file))"来逐行读取txt文件了!

    起因 执行一个C/C++程序出现segment fault.它逐行读取文本文件,每一行是一个图片名字,然后读图.处理图像,etc. 发现最后一次读取的文件名不存在(空的). 正确的逐行读取txt文件 ...

  4. python读取文本文件

    1. 读取文本文件 代码: f = open('test.txt', 'r') print f.read() f.seek(0) print f.read(14) f.seek(0) print f. ...

  5. Shell脚本逐行读取文本内容并拆分,根据条件筛选文件

    时间:2018-11-13 整理:byzqy 需求: 最近帮朋友写了一段脚本,他的需求是根据一份产品清单,去服务器上捞取对应产品编号的测试Log,数量大概有9000~10000条左右.文本内容大致如下 ...

  6. 【Shell脚本】逐行处理文本文件

    经常会对文体文件进行逐行处理,在Shell里面如何获取每行数据,然后处理该行数据,最后读取下一行数据,循环处理.有多种解决方法如下: 1.通过read命令完成. read命令接收标准输入,或其他文件描 ...

  7. 遍历List过程中删除元素的正确做法(转)

    遍历List过程中删除元素的正确做法   public class ListRemoveTest {     3 public static void main(String[] args) { 4 ...

  8. (转) Java读取文本文件中文乱码问题

    http://blog.csdn.net/greenqingqingws/article/details/7395213 最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中 ...

  9. Java读取文本文件中文乱码问题 .转载

    最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中文就变成乱码.读取代码如下: List<String> lines=new ArrayList<Stri ...

随机推荐

  1. win7利用tsmmc.msc远程管理工具

    win7和xp默认不带tsmmc.msc远程管理工具.我们只需要从2003的windows\system32目录下复制 mstsmhst.dll ,mstsmmc.dll 和tsmmc.msc文件放到 ...

  2. Java入门第一季——从此投身Java??

    找工作告一段落. 最后的工作呢,和java紧密相关,也是阴差阳错,不过都是软件开发,都好了,不过以后侧重点肯定是在java这边,php有机会还是一直学下去的,那么美的说~ Java开发第一季  一.简 ...

  3. (转)Bootstrap 之 Metronic 模板的学习之路 - (6)自定义和扩展

    https://segmentfault.com/a/1190000006815041 前面我们将 Metronic 的结构和源码大致浏览了一遍,Metronic 整个文件包有三百多兆,在实际项目中, ...

  4. httpclient模拟浏览器

    package com.java.httpclient; import java.io.IOException; import org.apache.http.HttpEntity; import o ...

  5. codeforces 468B two set(并查集)

    链接 B. Two Sets 题意 给两个集合A B,两个数a b,n个数x,分配n个数到两个集合,要求x , a-x在同一个集合,x , b-x在同一个集合,属于A集合的数输出0,B的输出1,无解输 ...

  6. 【udacity】机器学习-回归

    Evernote Export 1.什么是回归? regression 在监督学习中,包括了输入和输出的样本,在此基础上,我们能够通过新的输入来表示结果,映射到输出 输出包含了离散输出和连续输出 2. ...

  7. sessionStorage缓存滚动条位置

    想象在一个列表页,用户上滑页面浏览数据,点击某一条进入详情页,之后再从详情页返回列表页时不会想再从头去查看数据,这就要求我们记录用户刚刚浏览的位置,而不是重新刷新页面到了页面顶部.这里需要用到sess ...

  8. 利用Tensorflow训练自定义数据

    很多正在入门或刚入门TensorFlow机器学习的同学希望能够通过自己指定图片源对模型进行训练,然后识别和分类自己指定的图片.但是,在TensorFlow官方入门教程中,并无明确给出如何把自定义数据输 ...

  9. 用户体验之如何优化你的APP

    用户体验,速度为王,来几个优化APP“速度”的建议. 1.后台执行 毋庸多言,已是通常做法. 一般在执行下载任务时让其在后台运营,让用户有精力去做别的事情. 后端加载 2.提前显示 客户端与WEB的数 ...

  10. Ant批量处理jmeter脚本

    Ant是一个可以把代码从某个地方拿来,编译,再拷贝到某个地方去的构建工具.一时冲动学习一下,顺便王婆卖瓜尝试着处理jmeter的脚本,于是,采坑之旅也从此开始.本文省略ant安装步骤和ant脚本说明, ...