C++ 如何从 std::string 中删除 \0 个字符
C++ How to remove \0 char from std::string
从给定字符串中删除 [=13=]
个字符的正确方法是什么。
我正在尝试但没有成功:
std::string msg(data); // Data comes from a remote system connected via socket...
msg.erase(std::remove(msg.begin(), msg.end(), '[=11=]'), 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
的code数字
您的问题是由于缺少 #include
指令引起的。您的意图是从 <cstdio>
调用 std::remove()
from <algorithm>
, but you inadvertently called std::remove()
。所以用
#include <algorithm>
应该可以。
(恕我直言 std::remove(const char*)
应该是 std::remove_file(std::string const&)
或至少 std::remove_file(const char*)
。)
从给定字符串中删除 [=13=]
个字符的正确方法是什么。
我正在尝试但没有成功:
std::string msg(data); // Data comes from a remote system connected via socket...
msg.erase(std::remove(msg.begin(), msg.end(), '[=11=]'), 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
的code数字
您的问题是由于缺少 #include
指令引起的。您的意图是从 <cstdio>
调用 std::remove()
from <algorithm>
, but you inadvertently called std::remove()
。所以用
#include <algorithm>
应该可以。
(恕我直言 std::remove(const char*)
应该是 std::remove_file(std::string const&)
或至少 std::remove_file(const char*)
。)