Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: парсинг txt файла
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
addi
Здравствуйте!

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

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

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

Заранее благодарен
RobFPGA
Приветствую!

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

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

Успехов! Rob.


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

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

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

Успехов! Rob.

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

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

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

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

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


А как еще преобразовать ASCII если не тупо его в начале читать?
Вот сравнение уже можно оптимизировать, а так у всех все одинаково.
megajohn
кстати, regexp это очень наворочено. К примеру на PHP есть fnmatch которая по сути это wildchar. Должно быть попроще если есть похожее в boost.
A. Fig Lee
Смотря какой сложность. Можно средствами шелла:
awk, sed, grep/egrep, tr ... etc..
Methane
Цитата(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 это не шелл.
Tarbal
Цитата(Methane @ Nov 24 2013, 00:18) *
Код
$ locate sed | grep bin/
/bin/sed

sed это не шелл.


Ну что вы придираетесь? Ведь понятно, что автор хотел сказать.
A. Fig Lee
Цитата(Methane @ Nov 23 2013, 15:18) *
sed это классика. Решать такие вещи на С++, все равно что в Украину бабло вкладывать.


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

sed это не шелл.

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

yes
а я как всегда sm.gif посоветую питон (python) все-таки поудобнее awk для сложной обработки. ес-сно там все регекспы и пр. есть. ну и вообще приятный ддля пользователя язык имхо (в отличие от perl, снова имхо)
ну и shell (типа unix командная строка) пугает почему-то многих
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.