广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    如何解决getline读取文件失败

    来源:网络收集  点击:  时间:2024-02-12
    【导读】:
    工作中,使用C++的读写文件库fstream, 例如通过ifstream的getline函数读取文本的信息的时候会出现死循环导致程序挂死,当出现这种情况,应该如何解决呢?下面小编就说明下解决办法以及注意的事项!方法/步骤1/7分步阅读

    工程目录下创建文本文件resource\\test.txt, 并输入如下内容

    2/7

    工程主函数输入如下代码段,功能是从文本文件读取信息,并显示到窗口终端上

    3/7

    输入完成代码之后,运行的结果如下所示, 文本文件的信息都正常显示出来

    4/7

    文本文件再加入一行信息,其内容超过代码中acbuf定义的长度,运行之后程序直接卡死

    5/7

    这里提供两种解决办法,一种办法如下所示,ifs.getline调用good判断,如果异常直接退出

    6/7

    输入完成上面的代码段之后,程序运行的结果如下所示

    7/7

    另一种方法是扩大acbuf的大小,扩大之后,程序运行结果如下所示,所有信息都能够显示出来,但是这个方法的缺陷是当读取到的信息又大于数组的大小的时候,程序又会卡死。所以,最好的方法是将两种方法结合起来,既扩大缓存,又添加异常判断条件。

    注意事项

    喜欢经验欢迎点赞!

    使用ifs.getline(acbuf, sizeof(acbuf)-1).good()解决问题的时候,文本文件最后需要留一个空行,否则可能会导致正常读取数据的时候,无法读取到最后一行数据

    GETLINE读取失败程序死循环解决办法
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_27187.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 16:35:04  耗时:0.027
    0.0272s