Russian Qt Forum
Ноябрь 25, 2024, 07:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка с оператором []  (Прочитано 8469 раз)
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
В чем может быть проблема?
Записан
BRE
Гость
« Ответ #1 : Август 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();
Записан
Sancho_s_rancho
Гость
« Ответ #2 : Август 20, 2010, 08:00 »

А что непонятного в "index out of range"? Ты хочешь получить значение, идущее в списке после последнего.
Записан
setjmp
Гость
« Ответ #3 : Август 20, 2010, 08:03 »

Спасибо большое. А можно еще вопрос.
Есть ли в qt аналог getline, чтобы построчно считать из файла данные?
Записан
BRE
Гость
« Ответ #4 : Август 20, 2010, 08:07 »

Есть ли в qt аналог getline, чтобы построчно считать из файла данные?
QString QTextStream::readLine ( qint64 maxlen = 0 )
Записан
setjmp
Гость
« Ответ #5 : Август 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 за ответ, но я так и не понял суть проблемы.
« Последнее редактирование: Август 20, 2010, 19:35 от setjmp » Записан
BRE
Гость
« Ответ #6 : Август 20, 2010, 20:01 »

Покажи, что ты кладешь в list.

Суть какой проблемы?
Записан
merke
Гость
« Ответ #7 : Август 20, 2010, 20:05 »

"index out of range" ошибка означает, что ты обращаешься к несуществующему индексу массива. Помни индексация начинается с нуляв С++, так что обращайся 
Код:
List[1]
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.122 секунд. Запросов: 20.