C ++如何从std :: string

时间:2015-12-03 13:06:00

标签: c++ stdstring

从给定字符串中删除\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来自使用套接字的远程系统,由于源逻辑,中间包含几段代码,/0

1 个答案:

答案 0 :(得分:7)

您的问题源于缺少#include指令。您的意图是从<algorithm>致电std::remove(),但您无意中从<cstdio>致电std::remove()。所以用

#include <algorithm>

它应该有用。

(恕我直言std::remove(const char*)应为std::remove_file(std::string const&)或至少为std::remove_file(const char*)。)