c++ - 将 std::vector<char> 的内容复制到 char* 缓冲区中?

标签 c++ stl stdvector

我有一个 std::vector。我想将 vector 的内容复制到一定大小的 char* 缓冲区中。

有安全的方法吗?

我可以这样做吗?

memcpy(buffer, _v.begin(), buffer_size);

还是这个?

std::copy(_v.begin(), _v.end(), buffer); // throws a warning (unsafe)

还是这个?

for (int i = 0; i < _v.size(); i++)
{
  *buffer = _v[i];
  buffer++;
}

谢谢..

最佳答案

std::copy(_v.begin(), _v.end(), buffer);

这是在 C++ 中执行此操作的首选方法。如果 buffer 足够大,以这种方式复制是安全的。

关于c++ - 将 std::vector<char> 的内容复制到 char* 缓冲区中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8047854/

相关文章:

c++ - 使用 Visual Studio 2010 在 Vista 上安装 boost 1.42(或任何其他版本)

c++ - Qt 忽略 const 说明符

android - C++11 cmath 函数不在带有 gcc-4.8 或 clang 3.4 的 android NDK 的 std 命名空间中

由 C++ STL 卷积

c++ - std::vector 重新分配其内存数组时,使用的是复制构造函数还是移动构造函数?

c++ - 什么是 undefined reference /未解析的外部符号错误以及如何修复它?

c++ - 当我包含诸如 <vector> 之类的类并且只使用它的 1 个或 2 个成员函数时,编译器会做什么?

c++ - 如何为 const 模板参数定义复制构造函数?

c++ - 类对象的 vector

c++ - vector 对统一初始化