Запись QString в текстовый файл

Некоторое время назад мы уже достаточно подробно рассматривали работу с текстовыми файлами в Qt. Однако один важный нюанс всё-же остался за рамками той статьи. Поэтому есть смысл вернуться к данной теме.

Как известно, метод write класса QFile, который используется для записи, в том числе, текстовых файлов, принимает в качестве параметра массив байт. А, точнее объект QByteArray. И здесь, при работе со строками программиста ожидает подвох.

Дело в том, что если передать методу write строку в виде литерала, как мы делали это в предыдущей статье (см. пример кода ниже), то ничего особенного не произойдёт.

Строка будет успешно записана в файл.

Но, если использовать переменную типа QString, возникнет ошибка несовместимости типов. Поэтому, код приведённый ниже работать не будет.

Решить эту проблему можно путём преобразования QString в QByteArray.

Для этого нам не придётся писать никаких алгоритмов связанных с преобразованием потому, что библиотека Qt уже содержит готовое решение в виде ряда методов класса QString, которые преобразуют его в QByteArray в соответствии с выбранной кодировкой. Но, т. к. чаще всего в приложениях используются строки в кодировке UTF-8, среди них программисту вероятнее всего будет нужен только один — toUtf8.

Если мы доработаем предыдущий пример с использованием того же toUtf8, то мы сможем сохранить на QString в текстовый файл.

Если вдруг текстовый файл имеет другую кодировку, следует использовать соответствующий ей метод.

Эти методы на самом деле очень легко определить по их имени, в котором после to указано название кодировки. Например, если требуется сохранить текст в ASCII, то вместо toUtf8 следует использовать toAscii.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *