[英]C++ How to remove \0 char from std::string
從給定的字符串中刪除\\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
。
您的問題源於缺少的#include
指令。 您的意圖是從<algorithm>
調用std::remove()
,但是您無意中從<cstdio>
調用了std::remove()
。 所以用
#include <algorithm>
它應該工作。
(恕我直言std::remove(const char*)
應該是std::remove_file(std::string const&)
或至少是std::remove_file(const char*)
。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.