如何正确地从给定字符串中删除\0
字符?
我尝试了但没有成功:
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<char>::iterator {aka __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >}’ to ‘const char*’ for argument ‘1’ to ‘int remove(const char*)’
data
来自使用socket的远程系统,其中包含由于源代码逻辑而在中间带有/0
的几个代码数字。
std::string
已经由'\0'
终止,所以我认为这可能不明智。 - erip#include <algorithm>
了? - MicroVirus