Russian Qt Forum

Qt => Общие вопросы => Тема начата: noname.pl от Декабрь 22, 2006, 14:03



Название: поиск в тексте и замена
Отправлено: noname.pl от Декабрь 22, 2006, 14:03
задача: есть текст, в котором определенные образом _помечены_ слова. их нужно заменить на предложения. как это можно сделать быстро? в какую сторону смотреть? есть ли стандартный алгоритм? спасибо.

добавлено спустя 15 минут:

 p.s.: искал в delphiworld, но в нем описаны лишь платформозависимые способы (нужно подключать windows.h) ... можно ли как-то оргинизовать поиск и замену средствами qt ?


Название: поиск в тексте и замена
Отправлено: Вудруф от Декабрь 22, 2006, 14:35
Если тебе не надо regexp, а пометка - стандартна, то можно find & replace хоть для std::string, хоть для QString.


Название: поиск в тексте и замена
Отправлено: zabivator от Декабрь 22, 2006, 14:39
Look
std::find std::string::find, std::string::finf_first, ....
std::string::replace


Название: поиск в тексте и замена
Отправлено: Вудруф от Декабрь 22, 2006, 14:41
Как вариант, boost::regex для std::string.


Название: поиск в тексте и замена
Отправлено: noname.pl от Декабрь 22, 2006, 14:58
текст нужно будет брать из файла. возможно размер файла будет в несколько мегабайт. файл текстовый.
- стоит ли проводить поиск по самому файлу или скидывать его текст в буфер?
- поместиться ли в string такой объем текста?
- замену придется делать следующим образом. слова ищутся в исходном файле, а конечный результат их замены на предложения выводится во второй файл. не могу сообразить, как наилучшим образом организовать этот процесс? то ли через буфер текстовый, то ли через работу напрямую с ихсодным файлом ...
p.s.: boost::regexp наверное мне не нужен, так как я не знаю что это ;)


Название: поиск в тексте и замена
Отправлено: Вудруф от Декабрь 22, 2006, 20:41
1. Пожалуй, стоит, если тебе всего один раз надо по файлу пробежать. Тут от задачи зависит.
2. Да, поместится. Но можно считывать поблочно, можно построчно. Опять же от задачи зависит.
Цитировать
size_type string::max_size () const
Returns the maximum number of characters a string could contain.


3. В зависимости от 1 и 2.

P.S. boost.org


Название: поиск в тексте и замена
Отправлено: noname.pl от Декабрь 22, 2006, 21:01
1. по файлу нужно пробежаться действительно всего 1 раз.
2. можно считывать файл целиком.
3. как прикрутить boost ?


Название: поиск в тексте и замена
Отправлено: crocus от Декабрь 23, 2006, 07:00
Загоняешь все в QString и делаешь replace, не знаю как на мегабайтах, но до 100 кб работает моментально.


Название: поиск в тексте и замена
Отправлено: zabivator от Декабрь 23, 2006, 13:08
http://boost.org/ -> download


Название: поиск в тексте и замена
Отправлено: noname.pl от Декабрь 23, 2006, 15:21
zabivator, гуглом пользоваться умею =)


Название: поиск в тексте и замена
Отправлено: zabivator от Декабрь 23, 2006, 15:39
Это на тему "как прикрутить"
После скачивания скомпилируй bjam и собери библиотеку


Название: поиск в тексте и замена
Отправлено: Racheengel от Декабрь 24, 2006, 00:02
ну читать строками и менять...


Название: поиск в тексте и замена
Отправлено: Вячеслав от Декабрь 24, 2006, 20:38
А не проще QProcess с awk или sed'ом прикрутить ? Или замена не тривиальная ?