想知道缓冲区 C++ 的长度
Want to know the length of a buffer C++
我是 C++ 和编程的新手,我想知道是否有办法获取指针的长度。
假设 Myheader 是一个内部包含不同类型数据的结构。
我的代码是这样的:
char *pStartBuffer;
memcpy(pStartBuffer, &MyHeader, MyHeader.u32Size);
所以我想知道缓冲区的长度,以便我可以使用QT写入功能将数据复制到文件中。
file.write(pStartBuffer, length(pStartBuffer));
我该怎么做?
除了一个指针,没有其他方法可以找到缓冲区的长度。如果您确定它是一个字符串,您可以使用字符串长度函数之一,或者您可以自己跟踪缓冲区的长度。
Pointer 没有 "length"。你需要的是指针指向的数组的长度。
不,您不能从指针中提取该信息。
如果数组包含一个有效的、以null结尾的字符串,那么你可以通过迭代它直到找到一个空字符来获取该字符串的长度,这就是strlen
确实如此。
如果不是,那么您通常做的是在分配数组时将长度存储在变量中。 std::vector
或 std::string
将为您做的事情之一,以更适合您的使用为准。
指针不知道其分配的大小。
您可以使用 std::vector
为您记录尺码:
std::vector<char> pStartBuffer(MyHeader.u32Size);
memcpy(pStartBuffer, &MyHeader, MyHeader.u32Size);
后者:
file.write(pStartBuffer.data(), pStartBuffer.size());
我是 C++ 和编程的新手,我想知道是否有办法获取指针的长度。
假设 Myheader 是一个内部包含不同类型数据的结构。
我的代码是这样的:
char *pStartBuffer;
memcpy(pStartBuffer, &MyHeader, MyHeader.u32Size);
所以我想知道缓冲区的长度,以便我可以使用QT写入功能将数据复制到文件中。
file.write(pStartBuffer, length(pStartBuffer));
我该怎么做?
除了一个指针,没有其他方法可以找到缓冲区的长度。如果您确定它是一个字符串,您可以使用字符串长度函数之一,或者您可以自己跟踪缓冲区的长度。
Pointer 没有 "length"。你需要的是指针指向的数组的长度。
不,您不能从指针中提取该信息。
如果数组包含一个有效的、以null结尾的字符串,那么你可以通过迭代它直到找到一个空字符来获取该字符串的长度,这就是strlen
确实如此。
如果不是,那么您通常做的是在分配数组时将长度存储在变量中。 std::vector
或 std::string
将为您做的事情之一,以更适合您的使用为准。
指针不知道其分配的大小。
您可以使用 std::vector
为您记录尺码:
std::vector<char> pStartBuffer(MyHeader.u32Size);
memcpy(pStartBuffer, &MyHeader, MyHeader.u32Size);
后者:
file.write(pStartBuffer.data(), pStartBuffer.size());