1 / 1 / 0
Регистрация: 04.05.2019
Сообщений: 58
|
||||||
1 | ||||||
Надо найти ошибку. С++. Не обрабатывает11.05.2019, 15:16. Показов 1168. Ответов 38
Программа ищет и выводит на экран строки из файла, которые удовлетворяют запросу.
Выдает такое предупреждение, если в файле нашлось несколько совпадений: "Возникло необработанное исключение по адресу 0x771018A2 в prog.exe: исключение Microsoft C++: std::out_of_range по адресу памяти 0x00CFF910."
0
|
11.05.2019, 15:16 | |
Ответы с готовыми решениями:
38
Надо найти ошибку надо найти ошибку Надо найти ошибку... Надо найти ошибку |
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
|
|
11.05.2019, 23:13 | 21 |
MikaSan, если сам составлял файл то лучше переформатируй на манеру JSON или не "|" а допустим точкойс запятой или \t через банальный .split
Добавлено через 5 минут тогда ошибки с ренжом практически не будет
0
|
1 / 1 / 0
Регистрация: 04.05.2019
Сообщений: 58
|
|
12.05.2019, 00:30 [ТС] | 22 |
В результате я просто переписал алгоритм по другому, используя другую функцию. В общем, я не смог разобраться с ренджом.
Что вообще этот рендж из себя представляет и что делает?
0
|
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
|
||||||
12.05.2019, 12:29 | 23 | |||||
MikaSan, да особо нечего, это так сказать условное понятие в данной ошибки. смотри
0
|
1 / 1 / 0
Регистрация: 04.05.2019
Сообщений: 58
|
||||||
12.05.2019, 13:27 [ТС] | 24 | |||||
Опять столкнулся с этой проблемой. В чем ее причина, я так и не могу понять. Есть какие-то соображения?)
Добавлено через 8 минут Попытался через буффер сделать. Чтобы функция с итерацией дела не имела. Но результат тот-же.
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
12.05.2019, 13:42 | 25 |
MikaSan,
данная перегрузка этой функции бросает исключение, если buff.size() < 3. А у вас в конце вектора строки такие есть, т.к. вы криво читаете файл.
1
|
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
|
|
12.05.2019, 14:04 | 26 |
MikaSan, весь код плиз и сам файл, или он тот же?
0
|
1 / 1 / 0
Регистрация: 04.05.2019
Сообщений: 58
|
|
12.05.2019, 14:11 [ТС] | 27 |
0
|
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
|
|
12.05.2019, 14:12 | 28 |
Блин проще с нуля переписать. Особенно напрегает gelline
Добавлено через 52 секунды MikaSan, Запрос у\идет только по фамилии?
0
|
1 / 1 / 0
Регистрация: 04.05.2019
Сообщений: 58
|
|
12.05.2019, 14:13 [ТС] | 29 |
То есть? Откуда у меня там строки такие?))
А как его читать иначе? Конечно я забыл закрыть файл после работы с ним, но разве это повлияет на результат в данном случае?
0
|
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
|
|
12.05.2019, 14:19 | 30 |
MikaSan, На пустую строку в конце проверил??))))
Добавлено через 52 секунды MikaSan, Вообще лучше контролировать строку до загрузки в вектор, да и структуру сделать вдруг надо обратится только к одному элементу
0
|
1 / 1 / 0
Регистрация: 04.05.2019
Сообщений: 58
|
||||||
12.05.2019, 14:31 [ТС] | 31 | |||||
Да. Поиск идет только по фамилии. Но это легко меняется диапазоном сравнения символов в строках
Прошу прощения за дезу. Я дописал еще чисто визуальную составляющую. Она при вывод найденных строк, те что длинее 95 символов визуально обрезает ( только на печать ), чтобы на новую строку не перескакивали ( размеры окна консоли стоят 100 на 30 ) Вот дописанный цикл.
Я в будущем и хочу обращаться только к 1 элементу. Но со структурами у меня беда. Дико туплю с указателями. Как контролировать ее до загрузки в вектор? Векторы я только недавно открыл для себя. И в коде вроде бы просто считываю все из файла в вектор. Хотя я кажется подозреваю в чем дело... В цикле считывания строка эта последняя появляется? Добавлено через 2 минуты Черт, действительно создается пустая строка. Но как ее убрать безболезненно? К слову, прав ли я в том, что из-за этой последней, пустой строки, когда функция начинает свою работу по сравниванию строк, то не может найти там нужной длины и выдает ошибку? Добавлено через 3 минуты Может сделать два вектора? В один будет идти считывание из файла. А второй будет забирать строки из первого, кроме последнего, ориентируясь на счетчик counter? Но это как-то громоздко. Может как-то полегче можно от пустой последней строки избавиться?
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
12.05.2019, 14:41 | 32 |
так делать не надо, это ошибка.
Во вторых просто добавь в цикле поиска проверку на размер строки
0
|
1 / 1 / 0
Регистрация: 04.05.2019
Сообщений: 58
|
|
12.05.2019, 14:51 [ТС] | 33 |
а как тогда мне написать проверку на вывод всего файла?
С проверкой размера строки все увенчалось успехом!))))) Спасибо огромное!)) Добавлено через 8 секунд Спасибо всем!
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
||||||
12.05.2019, 14:54 | 34 | |||||
MikaSan,
0
|
1 / 1 / 0
Регистрация: 04.05.2019
Сообщений: 58
|
|
12.05.2019, 20:03 [ТС] | 35 |
О, красиво. попробую заменить. Правда для меня это совсем не очевидный способ вывести все строки из файла)). ТО есть алгоритм работает, пока не достигнет конца файла? Вернее, пока может считывать строки? Если я ошибаюсь, то растолкуйте пожалуйста))) А то так и не пойму))
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
||||||
12.05.2019, 20:07 | 36 | |||||
MikaSan,
0
|
1 / 1 / 0
Регистрация: 04.05.2019
Сообщений: 58
|
|
12.05.2019, 20:17 [ТС] | 37 |
Черт, это прекрасно. Если бы видели, насколько сейчас не оптимизирована моя курсовая, то наверное потрепали бы меня по плечу и молча ушли бы в закат))))) Спасибо огромное за объяснения!)))
0
|
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
|
|
13.05.2019, 23:01 | 38 |
MikaSan, Это сейчас такиие курсачи))))) Я помню писал GUI с шифрованием текста в картинку)
0
|
1 / 1 / 0
Регистрация: 04.05.2019
Сообщений: 58
|
|
14.05.2019, 14:19 [ТС] | 39 |
Если кого заинтересует тема и будет желание объяснить классы и разбитие программы на файлы Классы в С++. Разделение программы на файлы. Объясните пожалуйста на пальцах
0
|
14.05.2019, 14:19 | |
14.05.2019, 14:19 | |
Помогаю со студенческими работами здесь
39
Надо найти ошибку Надо найти ошибку Надо найти ошибку ,пожалуйста, Массивы.Надо найти ошибку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |