所以基本上我想創建一個接受字符串的格式函數,並將該字符串中的單詞替換爲用戶想要替換的任何字符。起初,我有一些問題與不可判定的迭代器,直到我意識到當你改變一個字符串的大小時,你可以使任何迭代器失效。現在它不會再拋出異常現在輸出與輸入相同。任何建議?需要幫助擦除並在C++中插入
string& formatFn(string& s, string& oldWord, string& newWord)
{
string word = "";
for (auto iter1 = s.begin(); iter1 != s.end(); ++iter1)
{
string tmpWord = "";
if (!isblank(*iter1)) // Testing for whitespace
{
tmpWord += *iter1;
if (tmpWord == oldWord)
{
string::iterator beg = iter1 - word.size();
string::iterator end = iter1;
auto sIter = s.erase(beg, end); // Get the position returned by erase
auto i = sIter - s.begin(); // Get an index
s = s.insert(s[i], newWord);
}
}
if (isblank(*iter1))
{
tmpWord.clear();
}
}
return s;
}
爲什麼不你使用'string :: find'和'string :: replace'來做這個? – us2012