![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Guest |
|
|||
|
Unregistered |
есть текстовый файл:
требуется написать парсер в коде нужно определять: - строчки, разделены концом строки - элемент строки, в примере разделены пробелом - тип элемента строки (string/int/double) P.S. очень бы хотелось для этого пользоваться потоками (std::fstream) Как реализовать подобный алгоритм? |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
простейший вариант:
читаеш до конца строки ( символ \n или \r ) и парсиш полученную строку -- пробегаеш по ней пока текущий символ != ' ' и если не равен -- плюсуеш его; если равен -- пропускаеш и начинаеш операци разбора сначала ( и так до конца строки ) для перехода на следующую строку пропускаеш все символы \n или \r для определения число/не число делаеш проверку первого символа: if ( (chr >= '0') && (chr <= '9') ) для определения целое число или нет проверяеш все символы на равенство ',' или '.' все -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
глупый вопрос но все же, как считать строку до "\n", если возможно то хотелось через поток, понятно что можно по символу с анализированием, но нет ли готовых решений предоставляемых std?
возможно ли задавать интересующий разделитель, тоесть читать как набор символов разделенных "\n" так и " "? |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
можно и по строкам читать -- метод getline() ifstream-а
и пробелы искать strcspn() -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
пробовал getline() но он у меня только первую строку читает
потом s1 не определена или File нужно какоето смещение давать? |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
показывай как дальше читаеш
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
пардон, это у меня с watch что-то не так
в строке s1 показывал {???}, а в _Bx правильное содержание а читал так же как и первую
Спасибо |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |