lnhv013710 2019-08-04 13:43 采纳率: 96.7%
浏览 311
已采纳

vs2010 MFC 求处理txt文本文件的后1000个字符的代码。

我这里有一个软件会产生txt格式的记录文件,大小几兆的样子,十几万行,每行100左右个字符。
这个记录文件的内容是随时变化的。
我想在ontimer响应函数(不要回调)内用cstudiofile每隔1秒钟读一次这个txt文件。
并取文件的末尾**大约**50行放到cstringarray内,然后处理。
为了尽量在1秒内提取+处理完,请给出尽可能高效的**提取代码**,
最好能加入:预防某次的提取+处理超过1秒的情况,
因为我感觉超过1秒,本次处理会被下次ontime函数强制中断。谢谢。

我想先定位到文件末尾,取文件末尾位置。然后从末尾-5000的位置开始readstring,舍掉第一次readstring可能读到的半行。是否可行?

  • 写回答

3条回答 默认 最新

  • lnhv013710 2019-08-21 22:02
    关注

    抱歉了,我要的是代码,大家都没有给出代码,分收回了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • threenewbee 2019-08-04 16:42
    关注

    可以用fseek移动函数指针,找到距离文件结束-多少个字节 的地方。至于这个多少个字节,因为1000个字符,如果不是纯英文的,换算成字节会比较困难,所以可以考虑多读取一些,比如你的文字编码是gb2312,那么读取2000个字节足够。
    如果是utf8,可以读取4000个字节。读取以后装入CString,再用 Right 函数取即可。
    但是如果只有几MB,一次性全部读取到CString再substr实际上也不会超过1s。现在硬盘的读取速度在200MB/s以上,固态硬盘在500MB/s以上,内存CPU的处理速度再快很多倍。

    评论
  • Burcy Wen 2019-08-05 10:11
    关注

    对于这个,如果换个方案思路呢,不是直接读取呢
    开启一个线程,维护一个50大小的列表,每次写入时,都往线程里也传入,超了将头部踢掉,尾部插入最新的,这样每1s都读这个缓存 应该快很多。

    当需要读取行数变化, 只需调整这个列表大小即可,方便维护,而且性能也容易跟得上。

    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 Qt 不小心删除了自带的类,该怎么办
  • ¥15 我需要在PC端 开两个抖店工作台客户端.(语言-java)
  • ¥15 有没有哪位厉害的人可以用C#可视化呀
  • ¥15 可以帮我看看代码哪里错了吗
  • ¥15 设计一个成绩管理系统
  • ¥15 PCL注册的选点等函数如何取消注册
  • ¥15 问一下各位,为什么我用蓝牙直接发送模拟输入的数据,接收端显示乱码呢,米思齐软件上usb串口显示正常的字符串呢?
  • ¥15 Python爬虫程序
  • ¥15 crypto 这种的应该怎么找flag?
  • ¥15 代码已写好,求帮我指出错误,有偿!