我有固定长度的char数组,用于存储我的解码数据。完成解码后,我想将char数组的内容复制到char向量中供以后使用。调试到“std:copy(...)”行时发生错误。我的std :: copy用法有什么问题?
谢谢!
std::vector<char> m_cCalibrationID;
char cCalibrationID[5];
memcpy(cCalibrationID, pszData, 4);
cCalibrationID[4] = 0;
// Copy to vector
std::copy ( cCalibrationID, cCalibrationID + 4, m_cCalibrationID.begin() );
答案 0 :(得分:4)
忽略你将它们命名为同一个东西而假装没有,你需要先为你的矢量分配空间:
char arr[5];
memcpy(arr, pszData, 4);
arr[4] = 0;
std::vector<char> vec(5); // contains five usable elements
std::copy(arr, arr + 5, vec.begin());
// ^^^ should be + 5, not + 4, to get null terminator
或者您可以使用std::back_inserter
:
char arr[5];
memcpy(arr, pszData, 4);
arr[4] = 0;
std::vector<char> vec; // contains zero usable elements
vec.reserve(5); // reserve space ahead of time
std::copy(arr, arr + 5, std::back_inserter(vec));
这将push_back
每个复制的元素。那说,为什么不跳过中间人?
std::vector<char> vec(5);
std::copy(pszData, pszData + 4, vec.begin());
// vec[4] already initialized to zero