Написание текста в QFile - PullRequest
       43

Написание текста в QFile

0 голосов
/ 29 октября 2018

Есть ли различия в двух способах написания текста в QFile?

Используя write метод:

QFile file("test.txt");
if(file.open(QIODevice::WriteOnly | QIODevice::Text)) {
    file.write("My Text\n");
}
file.close();

Или с помощью QTextStream:

QFile file("test.txt")
if(file.open(QIODevice::WriteOnly | QIODevice::Text)) {
     QTextStream out(&file);
     out << "My Text\n";
}
file.close()

Какой способ предпочтительнее? Есть ли различия в производительности?

1 Ответ

0 голосов
/ 30 октября 2018

QIODevice::write - это низкоуровневый байтово-ориентированный интерфейс для записи необработанных данных на устройство. QTextStream - это интерфейс более высокого уровня для написания форматированного текста. QTextStream вероятно реализовано в терминах QIODevice::write под капотом.

Один из основных вариантов использования QTextStream предназначен для записи QString данных. Текстовый поток обрабатывает преобразование из UTF-16 в кодировку по умолчанию для вашей локали (обычно 8-битную) (или любую другую кодировку через QTextStream::setCodec).

QTextStream почти наверняка работает хуже, поскольку он делает больше. Однако в большинстве случаев использования разница будет незначительной. Если вы строите большую строку необработанных данных вручную, то вам, вероятно, следует использовать QIODevice::write. Если вы хотите написать форматированный текст (который может включать QString), вам, вероятно, следует выбрать QTextStream.

...