簡體   English   中英

Qt-讀取包含多個NULL字符的文件

[英]Qt - Reading file containing multiple NULL characters

我得到了一個文件,該文件在一行中包含多個NULL特征/0 我的目標是加載文件並將/0替換為其他文件,但這樣做時遇到了一些問題。

在到達NULL字符的位置后,Qt停止讀取文件。

碼:

QTextStream fileContent;
QFile file(pendingFile);
if (file.open(QIODevice::ReadOnly | QIODevice::Text))
{
    fileContent.append(file.readAll());
}

文件:

Text
Text
Text /x00/x00/x00/x00/x00/x00/x00

More Text

我目前正在使用Qt 5.9.1並使用VS2017進行開發。

使用QDataStream讀取文件

QFile file("raw.dat");
file.open(QIODevice::ReadOnly);
QDataStream fileStream(&file);

qint64 fileSize = file.size();

QByteArray data(fileSize, '\0');
fileStream.readRawData(data.data(), fileSize)

在ByteArray中,您可以替換所有\\ 0元素。

更新(評論,請看underscore_d的答案):

data.replace('\0','_');
QString dataString(data);

問題不在於QFileNUL處停止讀取(即'\\0' ,而不是NULL宏),而是QTextStream認為NUL表示字符串結尾,因此在遇到第一個NUL之后停止了append()

是另一個站點上的上一個主題,討論的內容非常相似,並帶有建議的替代方法,其歸結為:

您需要先將NUL替換為QTextStream ,然后再將它們通過。 建議使用QDataStream 也許您根本不需要TextStream或任何Stream ,並且可以將文件作為二進制文件讀取到內存中,並在再次寫入之前用您選擇的替代項替換NUL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM