qvector 转为数组
在 qt 中想要把 qvector 转化为原始数据构成的数组,有几种方法:
- 直接使用循环读取
double *bytes = new double[vec.size()];
for (int i = 0; i < vec.size(); ++i) {
bytes[i] = vec[i];
}
QByteArray array = QByteArray::fromRawData(reinterpret_cast<void*>(bytes));
delete []bytes;
-
使用 qvector 自带的 constData 和 data
QByteArray data = QByteArray::fromRawData( reinterpret_cast<const char*>(vec.constData()), sizeof(double) * vec.size() );
- 使用 stream 来输出
QVector<double> vec; QByteArray data; QDataStream stream(&data, QIODevice::WriteOnly); for (auto x : vec) stream << x;
或者
QVector<double> vec;
// populate vector
QByteArray data;
QDataStream stream(&data, QIODevice::WriteOnly);
stream << vec;