![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| X-3R1 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 28.4.2007 Репутация: 1 Всего: 2 |
Вопрос почему появляется эксепшн в подобном случае:
Протрассировал std:: search, эксепшн в функции:
Эксепшн, на второй итерации основного цикла, почему-то при ++_First1, _First1 (входной итератор) становится невалидным. Ошибка при разыменовывании _Mid1. Другие алгоритмы, типа std::find работают |
||||
|
|||||
| mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
X-3R1, сливай из файла сначало в контейнер из файла в тот же вектор (через std::copy), а затем уже в этом векторе ищи значения из blok. Тебе нужен еще итератор для определения - нашел ли что или нет std:
Добавлено через 49 секунд гы. смайл заменил
Добавлено через 1 минуту и 34 секунды фак.
|
||||
|
|||||
| X-3R1 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 28.4.2007 Репутация: 1 Всего: 2 |
Угу это как вариант, но так бы не хотелось временную память создавать (
|
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
это не exception а assert
скорее всего дело в чтении файла, видимо после прочтения первой строки, читать становится нечего... |
|||
|
||||
| mrbrooks |
|
||||||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
дело в том что бы найти значение нужен итератор типа
К этому итератору результат из
не присвоить. да забыл сказать - у меня все нормально компилится с твоим кодом. я бы на твоем месте сделал проверку на
возможно файл либо не открывается, либо его нет. |
||||||||
|
|||||||||
| X-3R1 |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 28.4.2007 Репутация: 1 Всего: 2 |
Не, данные из файла прочитались нормально, std::find же работает. Такая же фигня, когда пытаюсь данные из файла загнать вначале в std::stringstream
Добавлено через 6 минут и 16 секунд Не совсем так, для работы этого алгоритма пойдут любые итераторы, поиск же производится через разыменовывание и operator ==():
Да, проверка есть:
|
||||||
|
|||||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
||||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
это как? данный код ищет в файле последовательность строк:
Это сообщение отредактировал(а) Lazin - 8.4.2009, 12:27 |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
Lazin,
за этот код студия мне вломила в печень
хотя возможно - я что то не учел. |
|||
|
||||
| X-3R1 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 28.4.2007 Репутация: 1 Всего: 2 |
угу, потому что вместо
надо
Нет в первой строке лишний пробел вкрался случайно |
||||
|
|||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
X-3R1, здесь опечатка произошла - копировал твой код и ничерта не исправил.
По этому будет так:
Добавлено через 52 секунды Собственно за это и получил в печень. |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
алгоритм возвращает std::istream_iterator<std::string> Добавлено через 2 минуты и 13 секунд попробовал это запустить у себя, получаю ту-же ошибку, хотя по идее все должно работать... |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
||||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
тогда придется читать весь файл в память, для чего тогда вообще использовать итератор? странно то, что файл можно прочитать через итератор it, но внутри алгоритма файл читаться перестает выглядит это примерно так: в std: далее выполняется оператор ++ для копии итератора, который вызывает оператор >> т.е пытается прочитать след. значение из файла, и происходит ошибка, с mingw этот код работатет Добавлено через 45 секунд вместо std: |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
а как же тогда я узнаю результат без итератора? к примеру как здесь Добавлено через 1 минуту и 20 секунд рожа смайла скрыла твою идею |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |