【发布时间】:2017-03-24 21:55:10
【问题描述】:
我可以像这样初始化QByteArray:
QByteArray m_data;
m_data[0] = 0x0c;
m_data[1] = 0x06;
m_data[2] = 0x04;
m_data[3] = 0x04;
m_data[4] = 0x02;
m_data[5] = 0x00;
但我想要更紧凑的东西,比如:
QByteArray m_data{0x0c, 0x06, 0x04, 0x04, 0x02, 0x00};
很遗憾,不允许使用此表单:
error: could not convert '{12, 6, 4, 4, 2, 0}' from '<brace-enclosed initializer list>' to 'QByteArray'
QByteArray m_data{0x0c, 0x06, 0x04, 0x04, 0x02, 0x00};
^
有没有其他选择(更接近我的梦想)?
(C++11/14/17 对这个问题有帮助吗?)
【问题讨论】:
-
是否需要存储
0x00字节?也许你可以使用QByteArray::QByteArray(const char * str)构造函数? -
是的,我需要那里的所有字节。
-
QByteArray m_data("\x0c\x06\x04\x04\x02", 6) -
QByteArray 可以 获得一个带有初始化列表的构造函数,但我认为这不会让你的生活更轻松。
{0x0c, 0x06, ...}是ints 的列表,而不是chars,并且那里禁止缩小=> 编译错误。{char(0x0c), char(0x06), ...}可以,但写起来很痛苦。只需按照建议使用 QByteArray(Literal)。