Russian Qt Forum
Ноябрь 24, 2024, 07:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: поиск в тексте и замена  (Прочитано 7931 раз)
noname.pl
Гость
« : Декабрь 22, 2006, 14:03 »

задача: есть текст, в котором определенные образом _помечены_ слова. их нужно заменить на предложения. как это можно сделать быстро? в какую сторону смотреть? есть ли стандартный алгоритм? спасибо.

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

 p.s.: искал в delphiworld, но в нем описаны лишь платформозависимые способы (нужно подключать windows.h) ... можно ли как-то оргинизовать поиск и замену средствами qt ?
Записан
Вудруф
Гость
« Ответ #1 : Декабрь 22, 2006, 14:35 »

Если тебе не надо regexp, а пометка - стандартна, то можно find & replace хоть для std::string, хоть для QString.
Записан
zabivator
Гость
« Ответ #2 : Декабрь 22, 2006, 14:39 »

Look
std::find std::string::find, std::string::finf_first, ....
std::string::replace
Записан
Вудруф
Гость
« Ответ #3 : Декабрь 22, 2006, 14:41 »

Как вариант, boost::regex для std::string.
Записан
noname.pl
Гость
« Ответ #4 : Декабрь 22, 2006, 14:58 »

текст нужно будет брать из файла. возможно размер файла будет в несколько мегабайт. файл текстовый.
- стоит ли проводить поиск по самому файлу или скидывать его текст в буфер?
- поместиться ли в string такой объем текста?
- замену придется делать следующим образом. слова ищутся в исходном файле, а конечный результат их замены на предложения выводится во второй файл. не могу сообразить, как наилучшим образом организовать этот процесс? то ли через буфер текстовый, то ли через работу напрямую с ихсодным файлом ...
p.s.: boost::regexp наверное мне не нужен, так как я не знаю что это Подмигивающий
Записан
Вудруф
Гость
« Ответ #5 : Декабрь 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
Гость
« Ответ #6 : Декабрь 22, 2006, 21:01 »

1. по файлу нужно пробежаться действительно всего 1 раз.
2. можно считывать файл целиком.
3. как прикрутить boost ?
Записан
crocus
Гость
« Ответ #7 : Декабрь 23, 2006, 07:00 »

Загоняешь все в QString и делаешь replace, не знаю как на мегабайтах, но до 100 кб работает моментально.
Записан
zabivator
Гость
« Ответ #8 : Декабрь 23, 2006, 13:08 »

http://boost.org/ -> download
Записан
noname.pl
Гость
« Ответ #9 : Декабрь 23, 2006, 15:21 »

zabivator, гуглом пользоваться умею =)
Записан
zabivator
Гость
« Ответ #10 : Декабрь 23, 2006, 15:39 »

Это на тему "как прикрутить"
После скачивания скомпилируй bjam и собери библиотеку
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #11 : Декабрь 24, 2006, 00:02 »

ну читать строками и менять...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Вячеслав
Гость
« Ответ #12 : Декабрь 24, 2006, 20:38 »

А не проще QProcess с awk или sed'ом прикрутить ? Или замена не тривиальная ?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.092 секунд. Запросов: 22.