Convirtiendo std :: string en std :: vector

Estoy usando una biblioteca que acepta datos como un vector de char . Necesito pasar una string a la biblioteca.

Pienso en usar std::vector constructor que acepta iteradores para llevar a cabo la conversión, pero me pregunto si existe una mejor manera de hacerlo.

 /*Note: json_str is of type std::string*/ const std::vector charvect(json_str.begin(), json_str.end()); 

No, esa es la manera de hacerlo, inicializando directamente el vector con los datos de la cadena.

Como @ildjarn señala en su comentario, si por alguna razón tu buffer de datos necesita ser terminado en nulo, necesitas agregarlo explícitamente con charvect.push_back('\0') .

También tenga en cuenta que, si desea reutilizar el búfer, use la función assign miembro que toma iteradores.

Su método de poblar el vector está bien; de hecho, probablemente sea mejor en la mayoría de los casos.

Solo para que sepas, sin embargo, no es la única forma. También podría simplemente copiar el contenido de la string en el vector . Esto será más útil cuando tenga un vector ya instanciado o si desea agregar más datos al final, o en cualquier punto, realmente.

Ejemplo, donde s es std::string y v es std::vector :

 std::copy( s.begin(), s.end(), std::back_inserter(v)); 

Al igual que con el caso del constructor, si necesita un terminador nulo, tendrá que volver a cerrarlo por su cuenta:

 v.push_back('\0');