我的字符串是!!(!())
。我想从字符串中删除双重感叹号。
这有效,但它会删除所有感叹号
remove_copy(str.begin(), str.end(),ostream_iterator<char>(cout), '!');//gives (())
这不起作用
remove_copy(str.begin(), str.end(),ostream_iterator<string>(cout), "!!");
使用上面的行会抛出此错误
/ usr / include / c ++ / 5 / bits / predefined_ops.h:194:17:错误:ISO C ++禁止指针和整数之间的比较[-fpermissive] {return * __ it == _M_value; }
答案 0 :(得分:0)
阅读remove_copy的文档
OutputIterator remove_copy (InputIterator first, InputIterator last,
OutputIterator result, const T& val);
The function uses operator== to compare the individual elements to val.
因此它使用字符串的每个字符并将其与val进行比较。所以第二种情况不起作用。
我最终这样做了
str.erase(str.find("!!"),2);
还要确保字符串有&#34; !!&#34;否则程序崩溃
if(str.find("!!") != string::npos)
str.erase(str.find("!!"),2);