#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
, что также удаляет файл, как описано в документации).