我想删除字符串中的撇号,但它不起作用
I want to remove apostrophe in a string, but is does not work
我想删除字符串中的撇号。我试着写一些东西,但我的语法好像错了。我不知道问题出在哪里,但我知道我的语法有些地方不对。我使用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());
EDIT:std::remove
可能更适合这种情况,但我将其保留为std::remove_if
,因为这是您开始使用的内容,而且它还提供了将谓词更改为类似isPunctuation
的内容的选项。
相关文章:
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 为什么用绕道钩住堆免费对删除/免费不起作用?
- C++从句子中删除给定字符的程序不起作用
- 双链表堆栈删除函数不起作用
- 从 TXT 文件中删除行不起作用
- 使用 xcvdata 删除标准 TCP IP 端口不起作用
- 从数组中删除元素不起作用的函数
- 如果 x,递归不起作用,我的函数只能删除第一个元素
- C++ SQLite3 准备的删除语句不起作用
- C++ 运算符删除重载对派生类不起作用
- 如何通过长度从 std::vector 中删除元素<string>(擦除不起作用)
- 为什么此C 代码不起作用 - 试图删除集合中的元素时,请参考错误
- 删除链表节点,C++函数不起作用
- 为什么这个从链表中删除节点的代码不起作用?
- 删除[] c++不起作用
- 删除Char指针在destructor中不起作用
- C++迭代时删除列表成员:标准解决方案不起作用
- 为什么这种删除文件夹中文件的方法不起作用?
- 使用 BST 的优先级队列 -- 删除最大不起作用
- std::在C++中设置删除程序不起作用