Search code examples
c++boostboost-uuid

Load boost::uuid from bytes in c++


I use .data() to get 16 bytes data array.
Later I write it to a file and I want to load it back to a uuid variable. Should I just perform memory copy to the variable as : (c++11)

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 (?)

Solution

  • First, whenever you find yourself wondering how to use Boost classes, there's the docs:

    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
        };
    }
    

    Since memcpy works I expect copy_n will work also.