Самый безопасный способ скопировать vector<char>
в буфер char *
- это скопировать его в другой вектор, а затем использовать внутренний буфер этого вектора:
std::vector<char> copy = _v;
char * buffer = ©[0];
Конечно, вы также можете получить доступ к_v
s буфер, если вам на самом деле не нужно копировать данные.Кроме того, имейте в виду, что указатель будет признан недействительным, если вектор будет изменен.
Если вам нужно скопировать его в определенный буфер, то вам нужно знать, что буфер достаточно большой, прежде чем копировать;нет никаких проверок границ для массивов.После того как вы проверили размер, ваш второй метод является лучшим.(Первый работает только в том случае, если vector::iterator
является указателем, что не гарантируется; хотя вы можете изменить второй аргумент на &_v[0]
, чтобы заставить его работать. Третий делает то же самое, но более сложен и, вероятно, долженбыть исправлено, чтобы оно не изменяло buffer
).