Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Форум .::NoWa.cc::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Visual C++ / С/C++

Уважаемые пользователи nowa.cc. Мы работаем для вас более 20 лет и сейчас вынуждены просить о финансовой помощи по оплате за сервер.
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: Z021474945171 Webmoney WME: E159284508897 Webmoney WMUSDT: T206853643180
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!

Ответ
 
Опции темы Опции просмотра Language
Старый 31.08.2007, 08:25   #1
Неактивный пользователь
 
Регистрация: 30.08.2007
Сообщений: 2
Репутация: 0
По умолчанию Помогите написать парсер для текстового документа!!!

Нужно написать парсер, который открывает текстовый файл, считывает побайтно содержимое и если в тесте попадается знак $ переводит на новую строку т.е.
____________
привет$$089Пока //Исходная строка
привет //Должны получить
$$089Пока
____________
void CParserDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
CFileDialog dlg(TRUE,"txt", "*.txt");
if (dlg.DoModal()==IDOK)
{
CFile myFile;
VERIFY(myFile.Open(dlg.GetPathName(), CFile::modeReadWrite));

char buffer[1024]={0}; //буфер куда читаем
}
}

int counter=0; //счетчик для побайтового смещения при поиске
//строки откуда начинать читать значения
myFile.Seek(0,CFile::begin); //стали в начало файла
do //Ищем откуда начать чтение данных
{
try
{
myFile.Seek(counter++,CFile::begin); //Пробуем переместиться в файле
}
catch (...)
{
//не получилось переместиться - ругаемся
myFile.Close();
MessageBox("Стартовая строка не найдена");
return;
}
//чистим буфер для чтения из файла
memset(buffer,0,sizeof(buffer));

if (myFile.Read(buffer,strlen(0))==0)
{//если ничего не смогли прочитать
myFile.Close();
MessageBox("Файл битый");
return; //уходим
}

}
___________________________

Я пока начинающий! Подскажите если кто знает пожалуйста!
Diy666 вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама:


Старый 01.09.2007, 16:52   #2
zss
Постоялец
 
Пол:Мужской
Регистрация: 05.02.2007
Адрес: Москва
Сообщений: 662
Репутация: 271
По умолчанию Ответ: Помогите написать парсер для текстового документа!!!

Для этой задачи достаточно прочитать весь текст в буфер, а потом все знаки $ заменить на \n$ (естественно каждый раз сдвигая остальной текст на 1 символ). Если знаком $ можно пожертвовать, то просто меняем его на \n
__________________
Сергей Сергеевич
zss вне форума
 
Ответить с цитированием Вверх
Старый 18.11.2007, 05:01   #3
novak
Неактивный пользователь
 
Регистрация: 18.11.2007
Сообщений: 5
Репутация: 0
По умолчанию Ответ: Помогите написать парсер для текстового документа!!!

Пример некорректный.

В ответ на "привет$$089Пока"
должны получить:
=================
привет
$
$089Пока
=================

А вообще, такие проблемы просто решаются скриптовыми языками:

Python: s=s.replace('$', '\n$')
novak вне форума
 
Ответить с цитированием Вверх
Старый 23.12.2007, 07:59   #4
skippy
Неактивный пользователь
 
Регистрация: 23.12.2007
Сообщений: 5
Репутация: 1
По умолчанию Ответ: Помогите написать парсер для текстового документа!!!

Для данного конкретного случая - то, что сказал ZSS, но с некоторой поправкой - не надо ничего сдвигать, просто буфер сканируется, и посимвольно пишется в результирующий файл, если встречается символ '$', то в файл пишется дополнительный '\n'. Поскольку текст уже в буфере, то писать можно в исходный файл (хотя более правильно писать во временный файл, а потом его переименовать, это исключает потерю данных при сбое во время записи).
Для более сложного случая использовать сканер - lex / flex (это классика).
Для парсинга вообще lex+yacc (классика) либо средства библиотеки boost.

Последний раз редактировалось skippy; 23.12.2007 в 08:04..
skippy вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать bat-ник-пинговщик Coldblooded Моделирование программ 4 15.07.2011 20:50
помогите написать программу Verysilent Visual C++ / С/C++ 3 24.11.2009 16:47
ПОМОГИТЕ написать программу!!! Rinaserga Visual C++ / С/C++ 1 01.11.2009 09:17
Помогите мне написать программу на C++ Germana Visual C++ / С/C++ 3 08.12.2008 05:52

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 11:18. Часовой пояс GMT +3.


Copyright ©2004 - 2025 NoWa.cc

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.04578 секунды с 13 запросами