\0
从给定字符串中删除char 的正确方法是什么.
我没有成功:
std::string msg(data); // Data comes from a remote system connected via socket... msg.erase(std::remove(msg.begin(), msg.end(), '\0'), msg.end());
这给出了编译错误:
error: cannot convert ‘std::__cxx11::basic_string::iterator {aka __gnu_cxx::__normal_iterator >}’ to ‘const char*’ for argument ‘1’ to ‘int remove(const char*)’
data
来自使用套接字的远程系统,并且/0
由于源逻辑而在中间包含几段代码.
你的问题来自缺失的#include
指令.你的目的是要调用std::remove()
从
,但你不经意的叫std::remove()
从
.所以
#include
它应该工作.
(恕我直言std::remove(const char*)
应该std::remove_file(std::string const&)
或至少std::remove_file(const char*)
.)