Я пытаюсь преобразовать Int массив массив символов и записать его в поток, как это:сериализации/десериализации целочисленный массив в массив символов
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)
Другого способом заключается в разделении строки до тех пор, пока я не доберусь до array=
, но опять же, код становится уродливым и даже более грязным, если я хочу добавить еще больше материала позже.
У вас, ребята, есть предложения, которые не включают другие библиотеки?
Чего вы хотите достичь? Я не понимаю, почему вы хотите добавить разделитель, так как вы не можете доверять им в любом случае. Есть такие числа, как 44, которые также будут создавать ',' .in ваш поток. – JojOatXGME
Другое, что может вас заинтересовать. Есть что-то, называемое * byte order *. Процессор с архитектурой x86 использует * little endian *, другие архитектуры могут использовать другой. Если вы хотите общаться с другими системами, может быть хорошей практикой конвертировать целые числа в * big endian * (во многих протоколах также называется * сетевой порядок байтов *). – JojOatXGME