이것은 새로운 질문 게시를 보증하기에 충분하지만 다른 사람이 here이라고 게시 한 질문에 대한 후속 질문입니다.C++ - 서명되지 않은 char *을 새로운 unsigned char * 배열로 복사
나는 OpenCV
(cv::Mat
) 행렬 변수 (알려진 크기의 단지 unsigned char *
)입니다. 예상대로이 작동
int initial_offset = 10;
unsigned char *r_record = new unsigned char[1024]();
std::copy(title.begin(), title.end(), r_record + initial_offset);
을 : 나는 코드를 사용하여 내 unsigned char*
배열에 std::string
를 복사 참조 된 문제의 답을 사용했다. 하지만 지금은 cv::Mat
변수의 각 행을 반복하고 그 부호없는 char 값을 동일한 r_record
배열에 삽입하고 싶습니다.
나는 코드가 있습니다
int data_offset = TITLE_OFFSET + 1;
cv::Mat &img = <from somewhere else>
for (int row=0; row<=img.rows; row++) {
unsigned char* i_row = img.row(row).data;
std::copy(???, ???, r_record + data_offset);
data_offset += img.cols; //This happens to be += 32 in every case that I am using
}
을하지만 난 i_row
데이터를 참조 할 ???
대신에 어떤 일이 일어 나는지 모르겠어요. 이 작업을 수행 할 수 있습니까?
또한 분명히 new unsigned char[1024]()
을 사용하는 것은 좋지 않지만, 뭔가 대체 할 방법이 확실하지 않습니다. 아니요,이 좋지 않습니다.
업데이트 :
아래 확실히 작동하지 @juanchopanza의 응답처럼 보인다.
std::string = "Title 1";
cv::Mat mat = <from somewhere else>;
//Test case
desc.data[1] = (unsigned char)65;
//Write the image information to the database
unsigned char *image_record = new unsigned char[1024]();
std::copy(title.begin(), title.end(), r_record + title_offset);
std::copy(mat.begin<unsigned char>(), mat.end<unsigned char>(), r_record + 33);
그러나 상관없이 무엇 r_record
에만 포함되어 있습니다 : 여기 내가 가진 무엇 "Title 1"
. 누구든지 아이디어가 있습니까? 이 같은
, 각 행을 반복 할 이유가있다? 그것은 (이 솔루션을 더 좋게 만드는) 그것처럼 보이지 않습니다. – Brett
@Brett 필요에 따라 요소를 복사합니다. 행에 대한 루프가 필요 없습니다. – juanchopanza
예상되는 결과가 나타나지 않습니다. 내 코드를 좀 더 업데이트하여 게시물을 업데이트했습니다. 어떤 아이디어? – Brett