只需使用replaceApp()
功能,可以發現:http://www.cppreference.com/wiki/string/basic_string/replace
然後代碼可以作爲看:
string s1 = "This is a test with a tab\\ta breakline\\nand apostrophe '";
string s2 = s1;
s2 = replaceAll(s2, "'", "''");
s2 = replaceAll(s2, "\\t", "'$7'");
s2 = replaceAll(s2, "\\n", "'$10'");
cout << "'" << s2 << "'";
當然改變 '\ t' - > '$ 7' 可以保存在一些結構您可以在循環中使用,而不是用單獨的行替換每個項目。
編輯:
第二種解決方案(例如,從評論拍攝)使用map
:
typedef map <string, string> MapType;
string s3 = "'This is a test with a tab'#9'a breakline'#$A'and apostrophe '''";
string s5 = s3;
MapType replace_map;
replace_map["'#9'"] = "\\t";
replace_map["'#$A'"] = "\\n";
replace_map["''"] = "'";
MapType::const_iterator end = replace_map.end();
for (MapType::const_iterator it = replace_map.begin(); it != end; ++it)
s5 = replaceAll(s5, it->first, it->second);
cout << "s5 = '" << s5 << "'" << endl;
你嘗試寫一個解析器? – 2011-02-24 20:00:10
你到底是什麼?這是一個「C」程序嗎?一個「Delphi的例程呢?正則表達式? – 2011-02-24 20:02:38
@ignacio它實際上是一個更大的解析器的一部分,我非常希望不必爲這些字符串編寫另一個。 @Cosmin我正在尋找一個C++功能是這樣的。 – Sambatyon 2011-02-24 20:17:51