在 C++ 中使用 SFML 将数据包数据复制到另一个数据包

copy packet data to another packet using SFML in c++

谁能告诉我如何将 sf::Packet 实例(例如 packet1)的 SFML 数据复制到另一个实例(例如 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。 到目前为止,我已经尝试过了,但没有用!

感谢所有回复,谢谢。

从未使用过 SFML,但通过阅读 SFML documentation,我预计:

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

更简单的解决方案是将 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;
}