2

如果我想从文件中获取二进制值,无论它们具有哪种格式,我该怎么做?我试过这段代码,但它只能逐行读取文本文件,仅此而已。

QFile file(QFileDialog::getOpenFileName (this, tr("Open File"),
                                         "",tr("")));
if (!file.open(QIODevice::ReadOnly ))
        return ;
int size = file.size();
qDebug()<<size;
while (!file.atEnd()) {
      QByteArray line = file.readLine();
      qDebug()<<line;
4

2 回答 2

2

分配一个缓冲区来读取数据并使用 QFile::read 函数。例如:

qint64 bufSize = 1024;
char *buf = new char[bufSize];
qint64 dataSize;
while (!file.atEnd()) {
    dataSize = file.read(buf, bufSize);
    /* process data */
}
于 2012-08-13T09:01:05.053 回答
0

您不仅可以读取 char 数组,还可以读取其他类型。例如从文件中读取结构:

struct Foo
{
  int bar;
  long foobar;
}
//...
Foo foo1;
file.read(foo1, sizeof(Foo));
于 2012-08-13T11:39:28.283 回答