我想删除字符串中的撇号,但它不起作用

I want to remove apostrophe in a string, but is does not work

本文关键字:不起作用 删除 字符串      更新时间:2023-10-16

我想删除字符串中的撇号。我试着写一些东西,但我的语法好像错了。我不知道问题出在哪里,但我知道我的语法有些地方不对。我使用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());
...
}
  1. remove_if的第三个参数需要一个谓词,而不是元素值。你想要普通的旧remove

  2. 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());

EDIT:std::remove可能更适合这种情况,但我将其保留为std::remove_if,因为这是您开始使用的内容,而且它还提供了将谓词更改为类似isPunctuation的内容的选项。