Запись в QTextStream

#c #qt #qtextstream

#c #qt #qtextstream

Вопрос:

Мой QTextStream пуст, когда этот код завершается:

 QString line1 = "This is line one";
QString line2 = "This is line two";
QString line3 = "This is line three";

QString outputFilename = "temp.txt";
QFile outputFile(outputFilename);
outputFile.open(QIODevice::WriteOnly);
outputFile.open(QIODevice::ReadWrite);  // This fixes the problem
  QTextStream out1(amp;outputFile);
   out1  << line1 << endl;
   out1  << line2 << endl;
   out1  << line3 << endl;

outputFile.flush();
QString temp = out1.readAll();           
mainclipboard->setText(temp);
outputFile.close();
  

Здесь QString temp пуст. Что я пропустил?

Спасибо hyde за ответ.

Комментарии:

1. Если вы опубликуете это в качестве ответа, я выберу его, спасибо!

Ответ №1:

Вы открываете файл с резервной QTextStream копией только для записи as, поэтому чтение должно завершиться неудачей только по этой причине. Просто измените режим открытия.

Также учитывайте позицию в файле, из которого вы читаете… Используйте pos() метод, чтобы проверить это, он должен сообщить вам, что позиция файла находится там, где закончилась ваша запись. Итак, непосредственно seek() перед чтением.

Поскольку вы работаете с single QTextStream , очистка не должна быть необходимой. Если у вас были отдельные объекты для чтения и записи, то вам нужно было бы очистить, чтобы убедиться, что данные записаны в ОС (очистить QTextStream , что также удаляет файл, как описано в документации).