#define toLower(x) transform(x.begin(), x.end(), x.begin(), tolower) //宏处理 void OnMacro(string ¯o, string &result) { toLower(macro); if (macro=="br") { result="/r"; } } //替换字符串内的宏,支持宏嵌套 string& replace_macro(string& str) { string::size_type pos(0),posend(0); string result; while(true) { if( (pos=str.find("$",posend))!=string::npos && (posend=str.find("$", ++pos))!=string::npos ) { string macro=str.substr(pos,posend-pos); result=""; OnMacro(macro, result); posend++; pos--; str.replace(pos,posend-pos,result); posend=pos; } else break; } return str; }