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 でファイルの読み取り、比較、書き込みができるようにしたいと考えています。