我正在尝试迭代字符串以查找标点符号,然后从字符串中删除标点符号。我能够找到标点符号,但出于某种原因,当我尝试删除标点时,字符串变得无法用于我的其余代码。
std::string punct;
for(std::string::iterator it = oneWord.begin(); it != oneWord.end(); it++)
{
if(ispunct(*it))
{
punct = *it;
oneWord.erase(*it);
}
}
上面的段编译但字符串" oneWord"不起作用,就像我没有删除任何一样。
编辑:
所以我试图尝试这个
std::remove_copy_if(oneWord.begin(), oneWord.end(),
std::back_inserter(punct), //Store output
std::ptr_fun<int, int>(&std::ispunct)
但是我仍然没有删除标点符号的问题。 还有人在评论中提到(注释用户)
std::string punct( iterator_from_remove_if, oneWord.end())
在尝试删除它之前。这不编译。我应该在哪里添加它? 谢谢大家到目前为止的建议。