Boost logo

Boost Users :

From: David Abrahams (dave_at_[hidden])
Date: 2003-12-12 14:50:26


Scott Meyers <Usenet_at_[hidden]> writes:

> I want to use regex to modify a string in place. In particular, I've read
> the contents of a file into a string, now I want to do some search/replace
> functions on the string, then write the modified string back out to the
> original file. I've looked through the regex documentation, including the
> October 2001 DDJ article, but I don't see any way to modify a string in
> place. From what I can tell, regex_merge looks like it does the kind of
> thing I want, except it doesn't seem to modify in place. I'd prefer to
> avoid creating two strings of each file's contents, one before regex
> processsing, one after. Is there functionality in regex that will let me
> modify a string in place?

Are you sure you can't use

http://www.boost.org/libs/regex/template_class_ref.htm#partial_matches

to solve your problem?

By the way, repeated in-place modification, especially if you start
from the front of the string, is O(N^2), so you really might be better
off doing this into a separate string. Don't forget that you could
end up with the same instantaneous memory usage anyway because when a
string grows it has to reallocate its buffer. Text editors normally use
something called a "gap buffer" to make this sort of thing more
efficient, but you really have to have a very specialized application
before that's the best solution.

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net