Puede un std::vector<char>
ser tratado como un array de esta manera:Puede std :: vector ser tratado como un array
std::vector<char> v(10);
strncpy(&v[0], "hello", 9); // <-- Is this safe?
Puede un std::vector<char>
ser tratado como un array de esta manera:Puede std :: vector ser tratado como un array
std::vector<char> v(10);
strncpy(&v[0], "hello", 9); // <-- Is this safe?
Sí, está bien. A partir de C++ 03, se requiere vector
para tener un almacenamiento contiguo.
A partir de C++ 11, lo mismo es cierto para std::string
, por cierto; y puede decir v.data()
como sinónimo de &v[0]
(que también es válido cuando v
está vacío).
Su mención de * A partir de C++ 03 .. * me da una duda acerca de cómo está en C++ 11, así que para confirmar AFAIK, 'std :: Vector' todavía es necesario tener almacenamiento contiguo incluso en C++ 11, ¿Es eso correcto? –
@Als Sí, eso no ha cambiado en C++ 11. – bames53
Sí. El nuevo estándar no cambia los requisitos de almacenamiento de 'vector'. En inglés, "a partir de" significa más o menos lo mismo que "desde", pero implica un cronograma más reciente para el evento. :) –
Sí, quise escribir std :: vector. Déjame intentar editar mi publicación original. –
user1061590
@TokenMacGuy: así no es como funciona 'strncpy' ... –
Sé que la pregunta es bastante simple y directa, pero no debe contar con el título solo para hacer la pregunta y agregar un cuerpo de pregunta real que, bueno, pregunta una pregunta. –