Russian Qt Forum

Qt => Общие вопросы => Тема начата: setjmp от Август 20, 2010, 07:32



Название: Ошибка с оператором []
Отправлено: setjmp от Август 20, 2010, 07:32
Проблема вот в чем.
Код:
...
QStringList list
...
QFile file("tmp.txt");
file.open(QIODevice::Append | QIODevice::Text);
QTextStream out(&file);
out << list[5];
file.close();
...

Это работает нормально, но стоит слегка изменить, чтобы записать весь list:
Код:
    QFile file("tmp.txt");
    file.open(QIODevice::Append | QIODevice::Text);
    QTextStream out(&file);
    for(int k = 0; k <= list.size(); k++){
        out << list[k];
    }
    file.close();
То выводится ошибка
Код:
ASSERT failure in QList<T>::operator[]: "index out of range", file /usr/include/qt4/QtCore/qlist.h, line 463
В чем может быть проблема?


Название: Re: Ошибка с оператором []
Отправлено: BRE от Август 20, 2010, 07:37
Код
C++ (Qt)
   QFile file("tmp.txt");
   file.open(QIODevice::Append | QIODevice::Text);
   QTextStream out(&file);
   for(int k = 0; k < list.size(); k++){
       out << list[k];
   }
   file.close();


Название: Re: Ошибка с оператором []
Отправлено: Sancho_s_rancho от Август 20, 2010, 08:00
А что непонятного в "index out of range"? Ты хочешь получить значение, идущее в списке после последнего.


Название: Re: Ошибка с оператором []
Отправлено: setjmp от Август 20, 2010, 08:03
Спасибо большое. А можно еще вопрос.
Есть ли в qt аналог getline, чтобы построчно считать из файла данные?


Название: Re: Ошибка с оператором []
Отправлено: BRE от Август 20, 2010, 08:07
Есть ли в qt аналог getline, чтобы построчно считать из файла данные?
QString QTextStream::readLine ( qint64 maxlen = 0 )


Название: Re: Ошибка с оператором []
Отправлено: setjmp от Август 20, 2010, 19:31
А объясните почему при
QMessageBox::warning(0,"Warning",list[2]);
Пишет
ASSERT failure in QList<T>::operator[]: "index out of range", file /usr/include/qt4/QtCore/qlist.h, line 463
Хотя явно в list имеется значение.
Спс BRE за ответ, но я так и не понял суть проблемы.


Название: Re: Ошибка с оператором []
Отправлено: BRE от Август 20, 2010, 20:01
Покажи, что ты кладешь в list.

Суть какой проблемы?


Название: Re: Ошибка с оператором []
Отправлено: merke от Август 20, 2010, 20:05
"index out of range" ошибка означает, что ты обращаешься к несуществующему индексу массива. Помни индексация начинается с нуляв С++, так что обращайся 
Код:
List[1]