#include <iostream>
#include <string>
#include <map>
int main()
{
std::string xml("a < > & ' \" string");
std::cout << xml << "\n";
// Characters to be transformed.
//
std::map<char, std::string> transformations;
transformations['&'] = std::string("&");
transformations['\''] = std::string("'");
transformations['"'] = std::string(""");
transformations['>'] = std::string(">");
transformations['<'] = std::string("<");
// Build list of characters to be searched for.
//
std::string reserved_chars;
for (auto ti = transformations.begin(); ti != transformations.end(); ti++)
{
reserved_chars += ti->first;
}
size_t pos = 0;
while (std::string::npos != (pos = xml.find_first_of(reserved_chars, pos)))
{
xml.replace(pos, 1, transformations[xml[pos]]);
pos++;
}
std::cout << xml << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWFwPgoKaW50IG1haW4oKQp7CiAgICBzdGQ6OnN0cmluZyB4bWwoImEgPCA+ICYgJyBcIiBzdHJpbmciKTsKICAgIHN0ZDo6Y291dCA8PCB4bWwgPDwgIlxuIjsKCiAgICAvLyBDaGFyYWN0ZXJzIHRvIGJlIHRyYW5zZm9ybWVkLgogICAgLy8KICAgIHN0ZDo6bWFwPGNoYXIsIHN0ZDo6c3RyaW5nPiB0cmFuc2Zvcm1hdGlvbnM7CiAgICB0cmFuc2Zvcm1hdGlvbnNbJyYnXSAgPSBzdGQ6OnN0cmluZygiJmFtcDsiKTsKICAgIHRyYW5zZm9ybWF0aW9uc1snXCcnXSA9IHN0ZDo6c3RyaW5nKCImYXBvczsiKTsKICAgIHRyYW5zZm9ybWF0aW9uc1snIiddICA9IHN0ZDo6c3RyaW5nKCImcXVvdDsiKTsKICAgIHRyYW5zZm9ybWF0aW9uc1snPiddICA9IHN0ZDo6c3RyaW5nKCImZ3Q7Iik7CiAgICB0cmFuc2Zvcm1hdGlvbnNbJzwnXSAgPSBzdGQ6OnN0cmluZygiJmx0OyIpOwoKICAgIC8vIEJ1aWxkIGxpc3Qgb2YgY2hhcmFjdGVycyB0byBiZSBzZWFyY2hlZCBmb3IuCiAgICAvLwogICAgc3RkOjpzdHJpbmcgcmVzZXJ2ZWRfY2hhcnM7CiAgICBmb3IgKGF1dG8gdGkgPSB0cmFuc2Zvcm1hdGlvbnMuYmVnaW4oKTsgdGkgIT0gdHJhbnNmb3JtYXRpb25zLmVuZCgpOyB0aSsrKQogICAgewogICAgICAgIHJlc2VydmVkX2NoYXJzICs9IHRpLT5maXJzdDsKICAgIH0KCiAgICBzaXplX3QgcG9zID0gMDsKICAgIHdoaWxlIChzdGQ6OnN0cmluZzo6bnBvcyAhPSAocG9zID0geG1sLmZpbmRfZmlyc3Rfb2YocmVzZXJ2ZWRfY2hhcnMsIHBvcykpKQogICAgewogICAgICAgIHhtbC5yZXBsYWNlKHBvcywgMSwgdHJhbnNmb3JtYXRpb25zW3htbFtwb3NdXSk7CiAgICAgICAgcG9zKys7CiAgICB9CgogICAgc3RkOjpjb3V0IDw8IHhtbCA8PCAiXG4iOwoKICAgIHJldHVybiAwOwp9Cg==