2016-06-09 108 views
0

我有 std::vector<unsigned char> data = {0x00,0x00,0x00,0x01}; - 我路过这的功能需要unsigned char * - 我做了以下内容:unsigned char * converted = static_cast<unsigned char*>(data.data());,我再通过转换功能。我将在整个代码中广泛使用它。我更喜欢使用矢量,因为我发现它们更容易处理。现在问题是 - 投射是否安全 - 我的意思是我可以指望它会一直工作,或者是一种缓慢或不好的方法?如果是这样,有什么更好的方法来做到这一点?C++投矢量<无符号字符>为unsigned char *

关于。

+0

没有什么不对,因为你没有给我们太多的代码来判断。 – DeiDei

+0

我想你不知道调整矢量大小。 – 2016-06-09 19:53:48

+3

它看起来不像演员对我来说甚至是必要的......'data()'返回一个'unsigned char *' – vu1p3n0x

回答

3

什么

std::vector<unsigned char> data; 
unsigned char* converted = &data[0]; 

+1

正如在重复问题中指出的那样,根据规范,[有保证](http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#69)。 – Kupiakos

+0

谢谢 - 确实好得多 – ZoOl007

1

(data.size()? &data.front():nullptr)避免了任何需要演员。

+0

甚至更​​好...作品的魅力 - 谢谢你 - 越多越好,我知道我知道得有多少... – ZoOl007

相关问题