Название: Удаление введенного из QTextStream Отправлено: Zekses от Январь 30, 2011, 14:45 Подскажите пожалуйста как в QT удалить из файла только что отправленные в него через QTextStream символы. В частности - у меня в цикле записывается лишний endl, который хотелось бы просто удалить, а не городить проверок на "последний член контейнера"
Название: Re: Удаление введенного из QTextStream Отправлено: DOOMer от Январь 30, 2011, 17:25 Покажите ваш цикл, пдз.
Название: Re: Удаление введенного из QTextStream Отправлено: Zekses от Январь 30, 2011, 17:37 Цитировать for(int indexer = 0; indexer < value.size(); indexer++) { QString toWrite = "\"" + value[indexer] + "\""; out << toWrite; if(indentLevel < 2) out << endl; } value это объект типа QStringList out cоответственно QTextStream натравленный на открытый файл. в оригинале было: Цитировать foreach(QString part, value) { out << "\"" + part + "\"" << endl; } но вот конкретно последний endl который в сейчашнем варианте отсекается с помощью if(indentLevel < 2) не позволяет мне использовать foreach тк я так и не нашёл в документации к QTextStream как его стереть из уже записанного. По большому счёту тут проблема даже не в foreach, а в том что мне приходится плодить дополнительный if в цикле из-за того что я тупо не знаю как удалить один единственный закрывающий endl. И сие меня прямо скажем удручает.Тк это сейчас это всего лишь плохая практика, а когда файлов обрабатываемых этим циклом станет много то может ещё и солидно сказаться на производительности... Название: Re: Удаление введенного из QTextStream Отправлено: DOOMer от Январь 30, 2011, 19:57 Если уж так критичен лишний if в цикле, то можно сначала выгрузить все в какой-нить верменный QByteArray, потом удалить лишний утвд ghb gjvjob QByteArray::chop(int n) и уже после все сразу выгрузить в QTextStream, связанный с открытм файлом.
Хотя ещё неизвестно что в итоге будет быстрее на больших файлах. Название: Re: Удаление введенного из QTextStream Отправлено: Zekses от Январь 30, 2011, 20:25 Похоже я сегодня туплю :)
Цитировать foreach(QString part, value) { out << "\"" + part + "\"" << endl; } if(indentLevel > 2) out.seek(out.pos()-1); решает мою проблему >_< |