我想删除字符串中的撇号,但不起作用
问题描述:
我想删除字符串中存在的撇号。我试图写一些东西,但似乎我的语法错了。我无法弄清楚问题出在哪里,但我知道在我的语法中有些东西是不正确的。我使用Dev-C++。我想删除字符串中的撇号,但不起作用
{...
cout<<"enter the word to test "<<endl;
getline(cin,givenword);
string str (givenword);
std::string deleteapostr(givenword);
// trying to delete apostrophe if present in the string
deleteapostr.erase(std::remove_if(deleteapostr.begin(), deleteapostr.end(), '\'', deleteapostr.end());
...
}
答
remove_if
需要用于其第三个参数,而不是元素值的谓词。你想要简单的旧remove
。你错过了对于
remove_if
参数的右括号。
deleteapostr.erase(std::remove(deleteapostr.begin(), deleteapostr.end(), '\''), deleteapostr.end());
答
remove_if接受3个参数,而不是4,让你的整个erase()
线被搞砸了。
还要注意的是,第三个参数是一个Predicate
,因此而不是将要删除,'\''
的性格,你会通过返回针对要遍历的类型bool
功能:
bool isApostrophe(char c) { return c == '\''; }
...
deleteapostr.erase(std::remove_if(deleteapostr.begin(), deleteapostr.end(), isApostrophe), deleteapostr.end());
编辑:std::remove
可能是更好的这种情况下,但我把它作为std::remove_if
,因为这是你开始了,它也使你可以选择将谓词改为isPunctuation
。
+0
感谢AusCBloke,它现在工作正常! – T4000
它工作得很好!谢谢本杰明。 – T4000