序列化/反序列化整型数组为char数组
Serialize/deserialize int array to char array
我正在尝试将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();
一切都如我所愿,但有一个问题我实在想不明白。假设我想要对字符串进行反序列化,为了使操作更简单,我想要拆分字符串并使用分隔符","(例如)。
由于数组的大小可以不同(10-10000000),所以只有在转换为char*的int数组最终也匹配分隔符时才会起作用
另一种方法是一直拆分字符串,直到我得到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();