Парсер CSV файла, исходный код |
Здравствуйте, гость ( Вход | Регистрация )
Парсер CSV файла, исходный код |
AD |
7.10.2010, 8:09
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Думаю, что может пригодиться. Подчиненная создала парсер CSV файлов на Qt. Есть просто некоторая добавка, которая может быть полезна и другим. В CSV файле можно делать однострочные комментарии с помощью символа // и многострочные комментарии с помощью /* */. Вот код:
h-file
cpp-file
Основное место идет поиск как раз комментариев. Разбивка строк на колонки идет в функции parseStrings(). Там все абсолютно просто - берется функция split у строки, ну и еще удаляются пустые строчки. Возможно, кому-то будет полезно. Пусть и не самый короткий код и идеальный вариант, но все же! Сообщение отредактировал AD - 7.10.2010, 13:34 |
|
|
Kagami |
7.10.2010, 20:31
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: 9 |
tr() уже не модно использовать? Еще научи ее bool QString::startsWith("//") вместо "(line[0] == QChar('/') && line[1] == QChar('/'))". Еще в том же CsvReader::isContinue() зачем-то два раза проверяется наличие однострочных комментариев. Еще меня смущает что поиск комментариев происходит в четырех функциях из шести описанных в файле исходных кодов. Лень разбираться, но выглядит подозрительно
P.S. А так в целом неплохо |
|
|
AD |
7.10.2010, 22:25
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
tr() уже не модно использовать? Еще научи ее bool QString::startsWith("//") вместо "(line[0] == QChar('/') && line[1] == QChar('/'))". Еще в том же CsvReader::isContinue() зачем-то два раза проверяется наличие однострочных комментариев. Спасибо. На счет StartsWith и я не знал! Не замечал, так скажем! Проверка идет каждый раз, как берется следующая строка, потому их много. |
|
|
vasilij-lavrov |
18.6.2011, 14:57
Сообщение
#4
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 18.6.2011 Пользователь №: 2757 Спасибо сказали: 2 раз(а) Репутация: 1 |
Думаю, что может пригодиться. Подчиненная создала парсер CSV файлов на Qt. Есть просто некоторая добавка, которая может быть полезна и другим. В CSV файле можно делать однострочные комментарии с помощью символа // и многострочные комментарии с помощью /* */. Вот код: Ага всё бы ничего да вот только он не умеет нормально парсить в соответствии с документацией ( http://ru.wikipedia.org/wiki/CSV )!!! Весь инет прогуглил, так и не нашел правильного, пришлось самому кодить, держите кому надо: h-file
cpp-file
Использование
Сайт автора: http://www.Baksik.ru
|
|
|
Гость_Гость_* |
1.12.2011, 12:35
Сообщение
#5
|
Гости |
Думаю, что может пригодиться. Подчиненная создала парсер CSV файлов на Qt. Есть просто некоторая добавка, которая может быть полезна и другим. В CSV файле можно делать однострочные комментарии с помощью символа // и многострочные комментарии с помощью /* */. Вот код: Ага всё бы ничего да вот только он не умеет нормально парсить в соответствии с документацией ( http://ru.wikipedia.org/wiki/CSV )!!! Весь инет прогуглил, так и не нашел правильного, пришлось самому кодить, держите кому надо: h-file
cpp-file
Использование
Сайт автора: http://www.Baksik.ru держите кому надо Спасибо большое. |
|
|
PAFOS |
1.12.2011, 14:03
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: 8 |
почему-то проигнорировали регулярки... там вашпе одной функцией можно было бы обойтись...
|
|
|
vasilij-lavrov |
1.12.2011, 14:24
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 18.6.2011 Пользователь №: 2757 Спасибо сказали: 2 раз(а) Репутация: 1 |
|
|
|
AD |
15.2.2012, 9:58
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Ага всё бы ничего да вот только он не умеет нормально парсить в соответствии с документацией ( http://ru.wikipedia.org/wiki/CSV )!!! Спасибо за свой вариант. А в чем проявляется некорректность парсера, выложенного мной? В твоем коде не разбирался, просто посмотрел. Словами можешь описать? Заранее спасибо. Может смогу корректно исправить парсинг. |
|
|
AD |
11.4.2012, 9:58
Сообщение
#9
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Так и не понял, в чем некорректность моего парсера. То, что он пропускает специфичные комментарии - это специально сделано.
|
|
|
AD |
20.5.2012, 17:46
Сообщение
#10
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Ау. Есть кто-нибудь из тех, кто использовал выложенный тут парсер? Так в чем недочет-то?
|
|
|
Текстовая версия | Сейчас: 29.11.2024, 7:54 |