c++工程实践——实际工程中的文件读取和日期处理的小问题

一、问题

在实际开发中遇到了两个小问题,一个是文件流的读写中的长度和结尾判断;另外一个是C++11库std::chrono::duration的数据类型的问题。这两个问题导致了两个结果:
1、流结尾判断不准确,多读一帧导致长度判断恒为正确,文件不加载
2、对标准库的时间库认知不统一,导致单位不同出现错判
这样说可能不好理解,在下面分别进行代码说明。

二、文件问题解决

先看一下文件处理的原始代码:

#include <fstream>
#include <iostream>

int main() {
   
   
  std::ifstream f(filename);

  if (!f.good()) {
   
   
    return 0;
  }

  char buf[1024];
  static std::streamsize count = 1024;

  while (!f.eof()) {
   
   
    size_t c = f.getline(buf, count).gcount();//可正常比较
    // size_t c = metaFileStream.gcount();//可正常比较
    std::cerr << "----" << f.gcount() << std::endl;
    auto dlen = f.gcount();
    //下面的判断进入,导致文件错误
    if (dlen < 3/*f.gcount()<3*/) {
   
   //问题主要在这里,原始的代码是注释掉的部分,但此处二者结果一致
      std::cerr << "dlen is:" << dlen << std::endl;
    }
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值