Entiendo que el uso del vector es una buena forma de almacenar datos binarios cuando se usa C++ y el STL. Sin embargo, para las pruebas de mi unidad me gustaría inicializar el vector usando una variable de cadena const char * C.const char * vector <unsigned char> Initalisation
Estoy intentando utilizar una variante del código que se encuentra aquí - Converting (void*) to std::vector<unsigned char> - para hacer esto:
const char* testdata = "the quick brown fox jumps over the lazy dog.";
unsigned char* buffer = (unsigned char*)testdata;
typedef vector<unsigned char> bufferType;
bufferType::size_type size = strlen((const char*)buffer);
bufferType vec(buffer, size);
Sin embargo, el VC++ compilador no está contento con la línea de inicialización del vector, indicando:
error C2664: 'std::vector<_Ty>::vector(unsigned int,const _Ty &)' : cannot convert parameter 1 from 'char *' to 'unsigned int'
aprecio el n00bity extrema de esta cuestión y estoy totalmente preparado para muchas críticas en el código anterior :)
Gracias de antemano, Chris
Es mucho mejor usar: 'std :: vector vec;' ' vec.push_back (" el rápido zorro marrón salta sobre el perezoso dog. ");' –
El código bajo prueba se usará finalmente para manejar datos binarios, de ahí la preferencia por vector. Para las pruebas, me gustaría inicializarlo usando const char * data. –
Puede obtener los datos subyacentes de char simplemente usando 'std :: string :: c_str()', y ahorrará muchos problemas potenciales al usar punteros sin procesar. No es un mal trato IMO. –