In my free Regular Expression Component Library ( http://www.tropicsoft.com/Components/RegularExpression ), which uses regex++ under the covers, you can do in-place modification of a file. Minuses: source not available, works only on Windows, uses regex++ from Boost 1.28 rather than latest version, supports BCB3,4,5,6 and VC6,7,7.1 only. Pluses: Added functionality. I do support it fully. Works solidly, but I give much credit for that to John Maddock. You don't need to download Boost regex++ files for it to work, since it is self-contained. I modified the regex++ source to do the in-place modification of a file using the same technique that the library uses for searching through files under Windows, which is the Windows file mapping API. In the regex_merge, as you have noticed, the output is sent to a separate string, or an output iterator. Maybe John Maddock can suggest something for the regex++ implementation itself which will solve your problem for you. Scott Meyers wrote:
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?