Каков правильный способ удаления символов \0
из заданной строки.C++ Как удалить символ 0 из std :: string
я пытаюсь без успеха:
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
в из-за исходной логики.
Это не очень хорошая идея, не так ли? Поскольку C++ 11, 'std :: string' заканчивается' '\ 0'', поэтому я думаю, что это может быть неразумно. – erip
Я получаю данные сокета из удаленной системы, которая идет с символами '\ 0'. Эта строка будет обрабатываться в логике сравнения строк, а затем выпустить mySql inserts/create, которая выдает несколько ошибок из-за присутствия '\ 0' в строке. Поэтому мне нужно очистить строку, удаляя эти символы. – Mendes
@erip: Это '\ 0' не является частью данных. Это деталь реализации, часть интерфейса. Это не повлияло бы на это. –