0

我正在用 Qt C++ 制作文件编辑器。我注意到,当我在 Windows 上使用记事本保存源文件时,它会用 0x0D + 0x0A 替换每一行(ANSI 编码默认值)。

如果我从 QTextEdit 获取数据并将其转换为 QByteArray,它将用 0x0A 替换行尾。

现在我的主要问题是我不知道如何过滤掉这些行尾或使其使 QFile 读取不同的文件。

我只是想要一种比较是否需要保存更改的方法。代码如下:

bool QFileTab::needSave()
{
    QFile file1 ( this->filePath );
    file1.open(QIODevice::ReadOnly);

    QByteArray data1 ( file1.readAll() );
    QByteArray data2 ( this->body.toPlainText().toLocal8Bit() );

    file1.close();
    return !IOHandler::compare(data1, data2);
}

void IOHandler::read(QFileTab *tab)
{
    QFile temp (tab->filePath);
    if(temp.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        QString data(temp.readAll());
        tab->data = data;
        temp.close();

    } else tab->data = QString("The file could not be read.");

    tab->doUpdate();
}

bool IOHandler::compare(QByteArray data1, QByteArray data2)
{
    return data1 == data2;
}

我希望能够在 Windows 和 Linux 上读取、比较和写入文件。

4

0 回答 0