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



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

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

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

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

我该怎么做?

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

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

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

而后者:

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

指针之外,没有办法找到缓冲区的长度。 如果您确定它是一个字符串,则可以使用字符串长度函数之一,也可以自己跟踪缓冲区的长度。

指针没有"长度"。您需要的是指针指向的数组的长度。

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

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

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

最新更新