我不敢相信这个问题以前没有被问过。我有一个字符串需要插入一个HTML文件,但它可能包含特殊的HTML字符。我想用适当的HTML表示替换这些。
下面的代码工作,但是是相当冗长和丑陋。性能对我的应用程序来说并不重要,但我也想在这里也有可扩展性的问题。如何改善这个?我想这是一个STL算法或一些深奥的Boost功能的工作,但下面的代码是我能够想到的最好的。
void escape(std::string *data)
{
std::string::size_type pos = 0;
for (;;)
{
pos = data->find_first_of("\"&<>", pos);
if (pos == std::string::npos) break;
std::string replacement;
switch ((*data)[pos])
{
case '\"': replacement = """; break;
case '&': replacement = "&"; break;
case '
case '>': replacement = ">"; break;
default: ;
}
data->replace(pos, 1, replacement);
pos += replacement.size();
};
}