2015-06-29 2 views
1

Я использую .data() для получения массива данных размером 16 байт.
Позже я напишу его в файл, и я хочу загрузить его обратно в переменную uuid. Должен ли я просто выполнить копию памяти переменной как: (C++ 11)Load boost :: uuid from bytes in C++

boost::uuids::uuid uuid = boost::uuids::random_generator()(); 
char[16] data; 
std::copy_n(&uuid, 16, data); // copy to data 
std::copy_n(data, 16, &uuid); // copy from data (?) 
+0

Можете ли вы показать больше кода, предпочтительно [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve)? Например, это помогло бы, если бы мы знали, что такое 'data' и' uuid' (мы можем * угадать *, но мы на самом деле не знаем *). –

+0

@JoachimPileborg, я добавил более конкретный пример – SagiLow

ответ

2

Во-первых, всякий раз, когда вы найдете себе интересно, как использовать классы Boost, есть Документах:

http://www.boost.org/doc/libs/1_58_0/libs/uuid/uuid.html

{ // example using memcpy 
    unsigned char uuid_data[16]; 
    // fill uuid_data 

    boost::uuids::uuid u; 

    memcpy(&u, uuid_data, 16); 
} 

{ // example using aggregate initializers 
    boost::uuids::uuid u = 
    { 0x12 ,0x34, 0x56, 0x78 
    , 0x90, 0xab 
    , 0xcd, 0xef 
    , 0x12, 0x34 
    , 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef 
    }; 
} 

С memcpy работ Ожидаю, что copy_n также будет работать.

+1

Спасибо, я прочитал документы, видимо, я пропустил эту часть. – SagiLow