![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Гость_Value_* |
![]()
Сообщение
#1
|
Гости ![]() |
Добрый вечер, прошу помочь разобраться с проблемой.
Есть строка QString, в ней текст, пытаюсь эту строку присвоить другой строке, перевернув ее задом на перед, через итератор по-символьно. Проблема в следующем, почему к строке не прибавляет символ через итератор?? Вот код.
Почему строка пустая ? Спасибо. |
|
|
lanz |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Потому что str.end() возвращает невалидный итератор, невалидный итератор нельзя никуда перемещать.
Используйте индексацию [] или .at http://doc.qt.io/qt-5/qstring.html#at |
|
|
Iron Bug |
![]()
Сообщение
#3
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
вообще странно, что в Qt до сих пор не было reverse_iterator.
сами они предлагают делать примерно так:
в новых версиях реверс-итераторы уже добавили: https://codereview.qt-project.org/#/c/109931/ |
|
|
lanz |
![]()
Сообщение
#4
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Цитата сами они предлагают делать примерно так: ![]() Нашел, все нашел. А не работает скорее всего из за разыменования невалидного итератора на первой итерации. Iron Bug правильный вариант говорит. Сообщение отредактировал lanz - 4.8.2015, 13:45 |
|
|
Гость_Value_* |
![]()
Сообщение
#5
|
Гости ![]() |
Понял, спасибо за ответы, решил проблему так:
Но вот странно что, когда я пытался сделать как раньше:
То объекту r присваивалось значение, но его никуда нельзя было добавить, на qDebug() было видно его. Спасибо!! |
|
|
Iron Bug |
![]()
Сообщение
#6
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
ты не можешь взять значение (*) итератора str.end(). потому что это не обычный итератор, а специальная абстракция для указания на конец элементов. вызов невалиден и, по идее, должен вызывать ошибку обращения к памяти.
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 10.7.2025, 12:06 |