вектор — указатель memcpy_s C ++

У меня есть вопрос, используя memcpy_s,

std::vector<char> MyBuf;
MyBuf.resize(10);

char* p = &MyBuf[0];

Теперь я хочу скопировать с помощью memcpy_s к данным vector используя указатель p,

memcpy_s(XXXXX, 10, "BOBBO", 5);

Что мне нужно ввести вместо XXXXX?

Когда используешь &p[0] вместо XXXXX Я получаю исключение памяти.

1

Решение

  1. Если вы используете C ++ 11, не используйте &MyBuf[0];использовать MyBuf.data() вместо.
  2. Указатель для использования p,
  3. Скопируйте еще один символ, если вы хотите, чтобы место назначения использовалось как строка, вам не хватает терминатора.
5

Другие решения

использование std::copy вместо. Это быстрее и безопаснее.

const char* str = "BOBBO";
std::copy(str, str + sizeof(str), MyBuf.begin());
1

использование MyBuf.data() в качестве указателя назначения, если у вас есть стандартная библиотека C ++ 11. С помощью &MyBuf[0] должно работать, но излишне некрасиво.

0
По вопросам рекламы [email protected]