如何删除字符串c ++的一部分

时间:2018-03-15 15:16:54

标签: c++ pointers iterator erase

我正在尝试迭代字符串以查找标点符号,然后从字符串中删除标点符号。我能够找到标点符号,但出于某种原因,当我尝试删除标点时,字符串变得无法用于我的其余代码。

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()) 

在尝试删除它之前。这不编译。我应该在哪里添加它? 谢谢大家到目前为止的建议。

0 个答案:

没有答案