37 / 35 / 9
Регистрация: 13.02.2017
Сообщений: 205
|
|||||||||||
1 | |||||||||||
Обработка конца строки при загрузке из файла03.04.2017, 08:51. Показов 1853. Ответов 7
Метки нет (Все метки)
День добрый.
Помогите, пожалуйста. Исходные данные. Есть класс:
word pages pages... pages word pages pages... pages ... word pages pages... pages Необходимо загрузить данные из файла в вектор ThingPtr'ов Не могу обработать конец строки в строке интов. Все время загоняет в бесконечный цикл и ошибки. Понаделал костылей, работает сейчас. Но костыли, есть костыли. Костыль 1 - добавил в конец каждой строки интов - -1. Пробовал ставить его условием окончания строки. Но после этого на новую строку со стрингом не переходит. На следущей итерации загружает в string какой то хлам. Костыль 2 - загоняю остатки во временный файл, просто ради того, чтобы перейти на новую строку файла. Костыль 3 - цикл загрузки объектов не обрабатывает конец файла, пришлось добавлять доп условие в сам метод класса. Как один из вариантов вижу загрузку строки с интами в string и уже из этой строки тянуть intы. Но мне кажется должно быть более тривиальное решение. Да и вообще хотелось бы знать, как грамотно обрабатывать конец строки. Внятного ответа нигде не нашел. Спасибо. Также буду благодарен, если кто даст инфу где поподробнее расписано про работу с файлами.
0
|
03.04.2017, 08:51 | |
Ответы с готовыми решениями:
7
Обработка символа конца строки при вводе Обработка Try.Except при загрузке из эксель файла Обработка XML строки при загрузке dbf в Delphi Обработка ошибки при загрузке для парсинга xml файла |
Любитель чаепитий
|
||||||
03.04.2017, 09:19 | 2 | |||||
0
|
37 / 35 / 9
Регистрация: 13.02.2017
Сообщений: 205
|
|
03.04.2017, 09:34 [ТС] | 3 |
А если в файле вот так:
слово1 1 5 15 123 3 8 9 Он ведь чтение не сбойнет? И соответственно до клера не дойдет и в tmp.pages будет записано: 1, 5, 15, 123, 3, 8, 9. А надо бы чтобы 123 сохранился как string в tmp.word Добавлено через 3 минуты И еще. Разве если в первой строке будет "много слов", он не заберет в word - "много", а на "слов" уйдет на следующий цикл? И соответственно там сразу же сбойнет поток и т.д. и т.п.
0
|
Любитель чаепитий
|
|
03.04.2017, 09:41 | 4 |
тогда считывай строку и оттуда числа доставай.
http://en.cppreference.com/w/c... ng/getline http://en.cppreference.com/w/c... tring/stol ну для первого слова используй std::getline .
0
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
|
03.04.2017, 09:43 | 5 |
ну пример выше скинули, пока нет конца файла EOF то цыкл будет продолжать работать
0
|
37 / 35 / 9
Регистрация: 13.02.2017
Сообщений: 205
|
|
03.04.2017, 09:51 [ТС] | 6 |
Я так и думал, на крайняк делать.
Т.е. определить символ конца строки при работе из потока у меня не получится? И грубо говоря 12' ' и 12'\n' для >> неотличимы? Понять, что стоит после инта нереально?
0
|
Любитель чаепитий
|
||||||
03.04.2017, 10:02 | 7 | |||||
Сообщение было отмечено alexjun как решение
Решение
для пользователя нет.
как вариант mFile.peek() .возвращает текущий символ в буфере, не вынимая его из потока. самый простой для вас вариант:
1
|
37 / 35 / 9
Регистрация: 13.02.2017
Сообщений: 205
|
|
03.04.2017, 10:27 [ТС] | 8 |
Спасибо!!!
Да, наверное самый оптимальный вариант.
0
|
03.04.2017, 10:27 | |
03.04.2017, 10:27 | |
Помогаю со студенческими работами здесь
8
Обработка ошибки при загрузке для парсинга xml файла Чтение файла с n строки и до конца файла Чтение до конца файла и строки Считывание из файла до конца строки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как программировать под HCL Notes и создавать свои продукты на ее основе
InfoMaster 11.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой мощную платформу для разработки корпоративных приложений, которая сочетает в себе функции электронной почты, календаря,. . .
|
Как работать с SVN (Subversion)
InfoMaster 11.01.2025
Введение
Система контроля версий является неотъемлемой частью современного процесса разработки программного обеспечения. Она обеспечивает управление изменениями в коде, позволяет отслеживать. . .
|
Использование GraphQL в JavaScript
InfoMaster 11.01.2025
Введение в GraphQL и его преимущества
В современной разработке веб-приложений эффективный обмен данными между клиентом и сервером играет ключевую роль. GraphQL представляет собой язык запросов и. . .
|
Администрирование Git, продвинутые техники работы с Git
InfoMaster 11.01.2025
Основы управления репозиторием
Эффективное управление Git-репозиторием требует глубокого понимания механизмов контроля доступа и инструментов администрирования. Рассмотрим ключевые аспекты. . .
|
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
|
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows
Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
|
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
|
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
|
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
|
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
|
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
|
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства
Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
|