Russian Qt Forum

Qt => Общие вопросы => Тема начата: Zekses от Январь 30, 2011, 14:45



Название: Удаление введенного из 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);

решает мою проблему >_<