使用c ++中的SFML将数据包数据复制到另一个数据包

时间:2015-06-04 05:00:00

标签: c++ sfml

有人可以告诉我如何将SFML的sf::Packet实例(例如packet1)的数据复制到另一个实例(例如packet2)吗?

我知道如何获取数据包数据,但问题是我无法将其设置为packet2的数据。这就是我的意思:

sf::Packet packet;                      // a compressing variable
sf::Packet packet2;                     // a compressing variable2

const void* get1 = packet.getData();    // get the data of above packet variable
packet2 << get1;                        // did not worked

问题在于我无法将packet1的数据带到packet2。 到目前为止,我已经尝试了这个,但是没有用!

所有回复都表示赞赏,谢谢。

2 个答案:

答案 0 :(得分:0)

从未使用过SFML,但是从阅读SFML documentation开始,我希望:

const void* get1 = packet.getData();
size_t len = packet.getDataSize();
packet2.append(get1, len);

答案 1 :(得分:0)

更简单的解决方案是将packet1复制到packet2,就像对任何“ value-type ”对象一样。

以下是一个例子:

#include <SFML/Network.hpp>
#include <iostream>

int main(int, char**)
{
    sf::Packet p1;
    p1 << "A string" << 42;

    sf::Packet p2 = p1;

    std::string str;
    int i;

    p1 >> str >> i;
    std::cout << "1) str: " << str << ", i: " << i << std::endl;

    p2 >> str >> i;
    std::cout << "2) str: " << str << ", i: " << i << std::endl;

    return 0;
}