答案 0 :(得分:3)
如果您的目标是序列化数据,则可以使用Google协议缓冲区来实现它。
答案 1 :(得分:2)
STL中没有序列化机制。根据您的目的,您可以使用library such as the one in Boost,也可以使用write your own serialization code,这可能是一种可行的选择,尤其是如果您的数据非常简单。
答案 2 :(得分:1)
前段时间我在C中编写了一个小型库来执行此功能。我在此处将代码放在Google代码上:code.google.com/p/packlib/
答案 3 :(得分:0)
结构与PHP中的unpack函数非常相似。
这些代码基本相同。
<强> PHP:强>
define('ISP_TINY', 4);
class IS_TINY
{
const PACK = 'CCCC';
const UNPACK = 'CSize/CType/CReqI/CSubT';
public $Size = 4;
public $Type = ISP_TINY;
public $ReqI;
public $SubT;
public function __construct($rawPacket)
{
$pkClass = unpack($this::UNPACK, $rawPacket);
foreach ($this as $property => $value)
{
$this->$property = $pkClass[$property];
}
}
}
<强> C ++:强>
#define ISP_TINY = 4;
struct IS_TINY // General purpose 4 byte packet
{
byte Size; // Always 4
byte Type; // Always ISP_TINY
byte ReqI;
byte SubT;
};
答案 4 :(得分:0)
前一段时间,我需要相同的功能,因此我为此编写了一个单头库。它支持php pack() / unpack()
中的大多数功能。该库位于github here上。