C ++相当于PHP的包()

时间:2010-03-28 16:48:18

标签: php c++

我的问题很简单。

在C ++ STL中是否有相当于PHP的pack()和unpack()函数? 如果不是,是否有其他方法可以达到同样的目标?

http://us.php.net/pack

感谢。

5 个答案:

答案 0 :(得分:3)

如果您的目标是序列化数据,则可以使用Google协议缓冲区来实现它。

http://code.google.com/apis/protocolbuffers/

答案 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上。