所以基本上我想创建一个接受字符串的格式函数,并用用户想要替换的任何内容替换该字符串中的单词。起初我对不可延迟的迭代器有一些问题,直到我意识到当你改变一个字符串的大小时,你可以使任何迭代器无效。它现在不再抛出异常,现在输出与输入相同。有什么建议???
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;
}