gpt4 book ai didi

c++ - 将 int 数组序列化/反序列化为 char 数组

转载 作者:太空宇宙 更新时间:2023-11-04 13:26:35 25 4
gpt4 key购买 nike

我正在尝试将 int 数组转换为 char 数组并将其写入流中,如下所示:

size_t arraySize = 10;
int* intArray = new int[arraySize];

std::ostringstream buffer;

buffer << "foo1=test,arraySize=10,array=";

char* charArrayPtr = reinterpret_cast<char*>(intArray);
buffer.write(charArrayPtr,arraySize*sizeof(int));

auto str = buffer.str();

一切都按预期工作,但有一个问题我真的无法解决。假设我想反序列化字符串,为了更容易,我想拆分字符串并使用分隔符“,”(例如)。

这只会在转换为 char* 的 int 数组最终也与分隔符匹配之前有效,因为数组的大小可能不同 (10-10000000)

另一种方法是一直拆分字符串,直到我到达 array= 但话又说回来,如果我想稍后添加更多内容,代码会变得丑陋甚至更加困惑。

你们碰巧有什么不包括其他库的建议吗?

最佳答案

我认为解决方案比您想象的要简单。您可以简单地使用 for 循环:

size_t arraySize = 10;
int* intArray = new int[arraySize];

std::ostringstream buffer;

buffer << "foo1=test,arraySize=10,array=";

char* charArrayPtr = reinterpret_cast<char*>(intArray);
for( unsigned int i = 0; i < arraySize; i++ ){
buffer.write(&charArrayPtr[i*sizeof(int)], sizeof(int));

// Write separator here
if( i != arraySize - 1 ) // Don't separate after the last one
buffer.write(", ", 2);
}

auto str = buffer.str();

关于c++ - 将 int 数组序列化/反序列化为 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33181610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com