C++ 追加Short、Int、Long和Long的数据。。。烧焦*

C++ 追加Short、Int、Long和Long的数据。。。烧焦*,c++,C++,我想将short、int、long中任何内容的原始数据附加到byte和bool中的char*或void* 以下是我的想法: template <typename T> static void memcopyToBytestring(T& target, size_t targetSize, char* previeous, size_t previousSize) { if (target && targetSize > 0) {

我想将
short
int
long
中任何内容的原始数据附加到
byte
bool
中的
char*
void*

以下是我的想法:

template <typename T>
static void memcopyToBytestring(T& target, size_t targetSize, char* previeous, size_t previousSize)
{
    if (target && targetSize > 0)
    {
        char newByteString[previousSize + targetSize];

        memcpy(newByteString, previeous, previousSize); //copy old
        memcpy(newByteString + previousSize, &target, targetSize); //add new

        previousSize += targetSize;
        previeous = new char[previousSize];

        memcpy(previeous, newByteString, previousSize);
    }
}
模板
静态void memcopyToBytestring(T&target,size\T targetSize,char*previeous,size\T previousSize)
{
如果(目标和目标大小>0)
{
char newByteString[previousSize+targetSize];
memcpy(newByteString,previeous,previousSize);//复制旧的
memcpy(newByteString+previousSize,&target,targetSize);//添加新的
previousSize+=targetSize;
Previous=新字符[previousSize];
memcpy(previeous、newByteString、previousSize);
}
}
有些东西似乎出了问题,我甚至不知道该如何正确地测试它(查看
target
的数据)

用例:我需要根据预定义的协议序列化数据以发送字节


问题:如何将数据正确地附加到字符数组中?

您可以使用
std::vector来实现以下目的:

#include <vector>

std::vector<char> stream;

template <typename T>
void AddToStream(T t)
{
    stream.insert(stream.end(), (char*)&t, ((char*)&t) + sizeof(t));
}
这将导致此阵列:

[0x78, 0x56, 0x34, 0x12, 0x01, 0x1B]

最后,要获取字节数组,请使用
stream.data()
stream.size()

Boost中有一个库。也许你应该看看它。

呃。。。什么!?为什么?你想补充一个问题吗?请不要把它用作你的私人博客或记事本。仅用于提问。根据您的建议编辑帖子。谢谢,非常感谢。我被我的
*
挂断了,我甚至没有想到
向量。很好的回答:)不客气。刚刚意识到,除了使用
sizeof(t)
,您还可以编写:
stream.insert(stream.end(),(char*)&t,(char*)(&t+1))
[0x78, 0x56, 0x34, 0x12, 0x01, 0x1B]