Scott Meyers
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