想知道缓冲区C ++的长度

时间:2015-01-29 14:59:53

标签: c++ qt file buffer variable-length

我是C ++和编程的新手,我想知道是否有办法获得指针的长度。
假设Myheader是一个结构,里面有不同类型的数据。
我的代码是这样的:

char *pStartBuffer;
memcpy(pStartBuffer, &MyHeader, MyHeader.u32Size);

所以我想知道缓冲区的长度,以便我可以使用QT写入功能将数据复制到文件中。

file.write(pStartBuffer, length(pStartBuffer));

我该怎么做?

3 个答案:

答案 0 :(得分:1)

除了指针外,没有办法找到缓冲区的长度。如果您某些它是一个字符串,您可以使用其中一个字符串长度函数,或者您可以自己跟踪缓冲区的长度。

答案 1 :(得分:1)

指针不知道其分配的大小。

您可以使用跟踪大小的std::vector

std::vector<char> pStartBuffer(MyHeader.u32Size);
memcpy(pStartBuffer, &MyHeader, MyHeader.u32Size);

后者:

file.write(pStartBuffer.data(), pStartBuffer.size());

答案 2 :(得分:0)

指针没有&#34;长度&#34;。你需要的是指针所指向的数组的长度。

不,您无法从指针中提取该信息。

如果数组包含一个有效的以null结尾的字符串,那么您可以通过迭代它来获取该字符串的长度,直到找到strlen所做的空字符为止

如果没有,那么通常您在分配数组时将长度存储在变量中。这是std::vectorstd::string将为您做的事情之一,以较适合您的方式为准。