Convert QByteArray to std::vector<unsigned char>

c++, qbytearray, std, unsigned-char, vector

Solution

I'm not familiar with Qt, but surely you just want

std::vector<unsigned char> bufferToCompress(
    byteArrayBuffer.begin(), byteArrayBuffer.end());

Note: `strlen` is not particularly useful in C++; it tells you the length of a C-style null-terminated string (by searching memory until it either finds either finds a zero-valued byte, or falls off the end of accessible memory and crashes), but can't tell you the size of an array, which is what you'd need here. Also, using evil C-style casts to force invalid code to compile is never a good idea.

Problem

I tried to convert `QByteArray` to `std::vector<unsigned char>` using this code: ``` unsigned char* buffer = (unsigned char*)byteArrayBuffer.constData(); std::vector<unsigned char>::size_type size = strlen((const char*)buffer); std::vector<unsigned char> bufferToCompress(buffer, buffer + size); ``` but, assuming that `byteArrayBuffer` is a `QByteArray` filled with data, I think it doesn't work well on line `unsigned char* buffer = (unsigned char*)byteArrayBuffer.constData();` because `byteArrayBuffer.size()` returns a different value than `bufferToCompress.size()`. How can I get it working?

Original source