Выберите произвольное окончание строки для записи текстового файла с помощью Qt

При написании текстового файла в Qt (используя QFile и QTextStream), любой \n или же endl автоматически преобразуется в нужное окончание строки для конкретной платформы (например, \r\n для Windows).

Я хотел бы позволить пользователю выбирать, какое окончание файла используется.

Есть ли способ установить желаемое окончание строки в Qt без использования режима двоичного файла?

3

Решение

Нет, нет Смысл текстового режима — «выполнять изменения в конце строки для этих платформ». Если вы хотите сделать что-то еще, используйте двоичный режим и осуществите преобразование, например, переопределив, например, QFile::writeData а также QFile::readData,

template <class Base> class TextFile : public Base {
QByteArray m_ending;
qint64 writeData(const char * data, qint64 maxSize) override {
Q_ASSERT(maxSize <= std::numeric_limits<int>::max());
QByteArray buf{data, maxSize};
buf.replace("\n", m_ending.constData());
auto len = Base::writeData(buf.constData(), buf.size());
if (len != buf.size()) {
// QFile/QSaveFile won't ever return a partial size, since the user
// such as `QDataStream` can't cope with it.
if (len != -1) qWarning() << "partial writeData() is not supported for files";
return -1;
}
return len;
}
...
}

TextFile<QFile> myFile;
...
5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector