Qual è il modo corretto di rimuovere i caratteri \0
da una determinata stringa.C++ Come rimuovere 0 char da std :: string
sto cercando senza successo:
std::string msg(data); // Data comes from a remote system connected via socket...
msg.erase(std::remove(msg.begin(), msg.end(), '\0'), msg.end());
Questo dà errore di compilazione:
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
proviene da un sistema remoto tramite presa, e contiene diversi pezzi di numeri di codice con /0
a il mezzo a causa della logica sorgente.
Questa non è una buona idea, vero? Dal momento che C++ 11, 'std :: string' è terminato da' '\ 0'', quindi penso che questo potrebbe non essere saggio. – erip
Sto ricevendo i dati del socket da un sistema remoto che viene fornito con i caratteri '\ 0'. Quella stringa verrà elaborata in una logica di comparazione delle stringhe e in seguito emetterà mySql insert/crea che sta causando diversi errori dovuti alla presenza di '\ 0' sulla stringa. Quindi ho bisogno di disinfettare la stringa rimuovendo questi caratteri. – Mendes
@erip: che '\ 0' non fa parte dei dati. È un dettaglio di implementazione, parte dell'interfaccia. Questo non lo influenzerebbe. –