我一直在更新我大约两年前编写的一个程序,我遇到了一个从字符串中删除所有标点符号和空格的调用。
调用工作正常,但我不确定这是最有效的方法。
代码行如下:
tempMessage.erase(remove_if(tempMessage.begin(), tempMessage.end(), (int(*)(int))ispunct), tempMessage.end());
我不记得我是从哪里想到这个的,也不记得它是如何组合在一起的,但我希望能够完全理解这个电话。
我知道 std::string.erase 摆脱了第一个参数,直到第二个参数。我还可以看到 remove_if 如何定义起点和终点,但是谁能告诉我 remove_if 调用中的第三个参数来自哪里?
我不记得为什么我的生活需要 (int(*)(int)) 。
当您查看代码时,任何人都可以改进它,或者提高它的效率吗?
谢谢