【问题标题】:Qt/C++ How to position in the middle of a file (offset) -> only known is filesizeQt/C++ 如何定位在文件中间(偏移量)-> 只知道文件大小
【发布时间】:2011-08-12 11:01:27
【问题描述】:

大家好,我在 Qt 中有:

FILE *pInFile = fopen(strFileName.toLatin1().constData(), "r");
QFileInfo fi(strFileName);
qint64 fileSize = fi.size();

//GO TO THE MIDDLE
//WHAT IS THE POSITION OF THE MIDDLE (INTEGER)

我不想在循环中读取整个文件 (fgets),而是想知道文件中间的偏移量。并基于该偏移量,我想获得该位置。

基本上;

  • 根据我给定的字节获取文件的偏移量(例如:fileSize/2)
  • 根据该偏移量,位置是多少(行索引)

是否有可能有这样的东西来确定位置? int centerPos = ftell(Offset middle, pInFile);

我不认为我在正确的道路上,你能给一些建议吗?

谢谢

ps.

而且最好放在位置的开头

【问题讨论】:

    标签: qt position offset


    【解决方案1】:

    使用QFile 代替原始文件指针。它有一个seek 方法。

    http://doc.qt.nokia.com/latest/qfile.html#seek

    您可以使用确定文件的中间位置

    QFile myfile("filename");
    int middle = myfile.size() /2;
    

    ...然后,如前所述,在调用后从该位置开始阅读

    myfile.seek(middle).
    

    【讨论】:

      【解决方案2】:
      • 以追加模式打开文件。
      • 执行 ftell() 以了解文件的结束位置。
      • 通过将第 2 步减半计算文件中间值,并将其存储在名为 middle 的变量中。
      • 然后定义如下函数

        void middle_fseek(FP* FilePointer, int offset)

        {

        fseek(FilePointer, middle+ offset, SEEK_SET);

        }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-12
        • 2010-12-31
        • 1970-01-01
        • 1970-01-01
        • 2011-10-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多