Espero que esta pregunta sea apropiada para stackoverflow ... ¿Cuál es la diferencia entre almacenar bytes de datos sin procesar (8 bits) en un std::string
en lugar de almacenarlos en std::vector<char>
. Estoy leyendo datos binarios de un archivo y almacenando esos bytes sin procesar en un std::string
. Esto funciona bien, no hay problemas o problemas para hacer esto. Mi programa funciona como se esperaba Sin embargo, otros programadores prefieren el enfoque std::vector<char>
y sugieren que deje de usar std::string
ya que no es seguro para los bytes sin formato. Entonces me pregunto por qué podría ser inseguro usar std::string
para mantener los bytes de datos brutos? Sé que std::string
se usa con mayor frecuencia para almacenar texto ASCII, pero un byte es un byte, por lo que no entiendo la preferencia del std::vector<char>
.std :: string o std :: vector <char> para contener datos en bruto
¡Gracias por cualquier consejo!
Solía ser que no se garantizaba que std :: string proporcionara almacenamiento contiguo, lo que importa si se hacen cosas como '& s [0]' para obtener un puntero no const a los datos. Pero esto ya no es cierto a partir de C++ 11. –
posible duplicado de [vector vs cadena para datos binarios] (http://stackoverflow.com/questions/1556229/vector-unsigned-char-vs-string-for-binary-data) –