string to boost::uuid conversion
Asked Answered
S

1

7

I've just started using boost in c++ and I just wanted to ask a couple of questions relating to uuids.

I am loading in a file which requires I know the uuids so I can link some objects together. For this reason, I'm trying to write my own uuids but I'm not sure if there's any special conditions for the strings etc as the strings I've been using (usually something basic) are not working. Can anyone point me in the right direction? I've tried using a string generator, but to no avail thus far so I'm assuming there's something wrong with my strings (which have currently just been random words).

Here's a short example kind of thing, can't give the real code:

void loadFiles(std::string xmlFile);

void linkObjects(custObj network)
{
    for (int i = 0; i < network->getLength(); i++)
    {
        network[i]->setId([boost::uuid]);  
        if (i > 0)
            network[i]->addObj(network[i-1]->getId());
    }
}
Scleroprotein answered 26/2, 2014 at 1:23 Comment(0)
E
12

I took your question as "I need a sample". Here's a sample that shows

  • reading
  • writing
  • generating
  • comparing

uuids with Boost Uuid.

#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <boost/uuid/random_generator.hpp>
#include <boost/lexical_cast.hpp>

using namespace boost::uuids;

int main()
{
    random_generator gen;

    for (int i = 0; i < 10; ++i)
    {
        uuid new_one = gen(); // here's how you generate one

        std::cout << "You can just print it: " << new_one << "; ";

        // or assign it to a string
        std::string as_text = boost::lexical_cast<std::string>(new_one);

        std::cout << "as_text: '" << as_text << "'\n";

        // now, read it back in:
        uuid roundtrip = boost::lexical_cast<uuid>(as_text);

        assert(roundtrip == new_one);
    }
}

See it Live On Coliru

Eanes answered 26/2, 2014 at 9:15 Comment(2)
What is the difference between using the boost::lexical_cast<> and the uuids::to_string ? From what I saw both works, but today what's the best practice to get the roundtrip ?Dys
@Dys The docs state that to_string is likely faster. I just used lexical_cast because of the symmetry (like the same documentation page also demos). Note, for actual speed, prefer to_charsEanes

© 2022 - 2024 — McMap. All rights reserved.