реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> парсинг txt файла, модель, метод, как лучше
addi
сообщение Nov 22 2013, 15:44
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422



Здравствуйте!

Вопрос по программированию на верхнем уровне, на языке Си/Си++
Есть текстовый документ с латинскими буквами, мне необходмимо его прочитать и внести некоторые изменения в определенных местах по определнным тескстовым выражениям.

Пробую тупо читать ASCII код и сравнивать с нужными словами, далее куча флагов.
Этот способ я взял за основу не долго думая и теперь задумался может как то можно попроще, как люди делают например.

Поэтому вопрос к тем кто знает стандартное решение подобного вопроса.

Заранее благодарен

Сообщение отредактировал addi - Nov 22 2013, 17:28
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Nov 22 2013, 15:54
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Самый классический - Flex+Bison
...
Самый навороченный - Boost::spirit

Ну и между ними куча вариантов с использованием разных мутных либ.

Успехов! Rob.


Go to the top of the page
 
+Quote Post
addi
сообщение Nov 22 2013, 16:11
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422



Цитата(RobFPGA @ Nov 22 2013, 18:54) *
Приветствую!

Самый классический - Flex+Bison
...
Самый навороченный - Boost::spirit

Ну и между ними куча вариантов с использованием разных мутных либ.

Успехов! Rob.

спасибо большое, буду гуглить и изучать!!!)
Go to the top of the page
 
+Quote Post
adnega
сообщение Nov 22 2013, 16:19
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(addi @ Nov 22 2013, 20:11) *
спасибо большое, буду гуглить и изучать!!!)

Если бы не C... я для таких целей использую Perl.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Nov 22 2013, 16:52
Сообщение #5


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Классический вариант - использовать regexp. В библиотеке C++ должен быть такой класс. Большинство простых задач это решает, хотя полностью все возможности синтаксиса regexp бывают представлены редко. Языки Perl и PHP поддерживают всё тот же regexp, ничего нового там не придумано.

Можно поискать и внешние библиотеки. Например, Гуглом по запросу "regexp c++ library".
Go to the top of the page
 
+Quote Post
addi
сообщение Nov 22 2013, 17:30
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422



Цитата(Xenia @ Nov 22 2013, 19:52) *
Классический вариант - использовать regexp. В библиотеке C++ должен быть такой класс. Большинство простых задач это решает, хотя полностью все возможности синтаксиса regexp бывают представлены редко. Языки Perl и PHP поддерживают всё тот же regexp, ничего нового там не придумано.

Можно поискать и внешние библиотеки. Например, Гуглом по запросу "regexp c++ library".

Спасибо большое, теперь я вообще все знаю!)
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 22 2013, 17:51
Сообщение #7


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(addi @ Nov 22 2013, 17:44) *
Пробую тупо читать ASCII код и сравнивать с нужными словами, далее куча флагов.
Этот способ я взял за основу не долго думая и теперь задумался может как то можно попроще, как люди делают например.


А как еще преобразовать ASCII если не тупо его в начале читать?
Вот сравнение уже можно оптимизировать, а так у всех все одинаково.
Go to the top of the page
 
+Quote Post
megajohn
сообщение Nov 22 2013, 18:20
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



кстати, regexp это очень наворочено. К примеру на PHP есть fnmatch которая по сути это wildchar. Должно быть попроще если есть похожее в boost.


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Nov 23 2013, 20:10
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Смотря какой сложность. Можно средствами шелла:
awk, sed, grep/egrep, tr ... etc..


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
Methane
сообщение Nov 23 2013, 20:18
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(A. Fig Lee @ Nov 23 2013, 22:10) *
Смотря какой сложность. Можно средствами шелла:
awk, sed, grep/egrep, tr ... etc..

sed это классика. Решать такие вещи на С++, все равно что в Украину бабло вкладывать.

Цитата(A. Fig Lee @ Nov 23 2013, 22:10) *
Смотря какой сложность. Можно средствами шелла:

Код
$ locate sed | grep bin/
/bin/sed

sed это не шелл.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Nov 23 2013, 23:10
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(Methane @ Nov 24 2013, 00:18) *
Код
$ locate sed | grep bin/
/bin/sed

sed это не шелл.


Ну что вы придираетесь? Ведь понятно, что автор хотел сказать.
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Nov 23 2013, 23:15
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(Methane @ Nov 23 2013, 15:18) *
sed это классика. Решать такие вещи на С++, все равно что в Украину бабло вкладывать.


Код
$ locate sed | grep bin/
/bin/sed

sed это не шелл.

А кто говорил, что это шелл?
Я имею больше сказать, и я таки скажу!
Вы будете удивлятся, но awk это таки тоже не шелл!



--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
yes
сообщение Nov 27 2013, 16:23
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



а я как всегда sm.gif посоветую питон (python) все-таки поудобнее awk для сложной обработки. ес-сно там все регекспы и пр. есть. ну и вообще приятный ддля пользователя язык имхо (в отличие от perl, снова имхо)
ну и shell (типа unix командная строка) пугает почему-то многих
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01427 секунд с 7
ELECTRONIX ©2004-2016