我试图将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();
一切都按预期工作但有一个问题我真的无法解决问题。让我们说我想反序列化字符串,为了更容易,我想分割字符串并使用分隔符&#34;,&#34; (例如)。
只有转换为char *的int数组最终才会匹配分隔符,因为数组的大小可能不同(10-10000000)
另一种方法是将字符串一直分开,直到我到达array=
,但是如果我想稍后添加更多东西,那么代码会变得丑陋甚至更加混乱。
你们有没有提出任何不包含其他文件的建议?
答案 0 :(得分:0)
我认为解决方案比你想象的要简单。你可以简单地使用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();