Re: replace string file
"Eric Kaplan" wrote:
someone suggest use the following function, any idea on how to
call it
from my function?
[...]
void
globalSearchAndReplace(
std::istream& source,
std::ostream& dest,
std::string const& search,
std::string const& replace )
[...]
You cannot call it from your function because you don't have the
input stream object there. You need to call it somewhere before
your function where the input stream object is still available:
std::ifstream inputFile = ...;
std::ofstream& dumpFile = ...;
globalSearchAndReplace(inputFile, dumpFile,
"<givenname xsi:nil='true'/>",
"<givenname>.</givenname>");
However, I reiterate what I said in my original answer. Processing
XML files as if they were simple text is extremely fragile and
unstable solution. It is because exactly the same data may be
represented differently in XML stream. XML parser knows how to
deal with the differences, while `globalSearchAndReplace' function
doesn't. For example, the input node may be written like this in
XML stream:
<givenname xsi:nil='true'/>
^
redundant space character
The above solution with `globalSearchAndReplace' will fail. You'll
miss the `givenname' node. And what about this one:
<givenname xsi:nil="true" />
or this
<givenname xsi:nil='true'></givenname>
or this
<givenname
xsi:nil='true'
/>
etc etc.
How do you plan to cope with all these varieties?
Alex