Convert boost::uuid to char*

31,689

Solution 1

You can do this a bit easier using boost::lexical_cast that uses a std::stringstream under the hood.

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

const std::string tmp = boost::lexical_cast<std::string>(theUuid);
const char * value = tmp.c_str();

Solution 2

Just in case, there is also boost::uuids::to_string, that works as follows:

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

boost::uuids::uuid a = ...;
const std::string tmp = boost::uuids::to_string(a);
const char* value = tmp.c_str();

Solution 3

You can include <boost/uuid/uuid_io.hpp> and then use the operators to convert a uuid into a std::stringstream. From there, it's a standard conversion to a const char* as needed.

For details, see the Input and Output second of the Uuid documentation.

std::stringstream ss;
ss << theUuid;

const std::string tmp = ss.str();
const char * value = tmp.c_str();

(For details on why you need the "tmp" string, see here.)

Solution 4

You use the stream functions in boost/uuid/uuid_io.hpp.

boost::uuids::uuid u;

std::stringstream ss;
ss << u;
ss >> u;

Solution 5

boost::uuids::uuid u;

const char* UUID = boost::uuids::to_string(u).c_str();

It is possible to do a simple and quick conversion.

Share:
31,689
SchwartzE
Author by

SchwartzE

I serve three primary roles simultaneously. I am a software developer, modeling and simulation analyst, and a project/program manager. My primary software development experience is utilizes the .Net development stack and SQL Server databases.

Updated on November 25, 2020

Comments

  • SchwartzE
    SchwartzE over 3 years

    I am looking to convert a boost::uuid to a const char*. What is the correct syntax for the conversion?

  • user1556435
    user1556435 about 8 years
    For people working with ancient boost versions: This method is introduced in 1.44. See boost.org/doc/libs/1_43_0/boost/uuid/uuid_io.hpp boost.org/doc/libs/1_44_0/boost/uuid/uuid_io.hpp
  • Gr-Disarray
    Gr-Disarray almost 5 years
    after reading the boost documentation it seems to me that this answer is correct, however as per the documentation also indicates that to_string and to_wstring functions provided by boost::uuids is likely faster than boost::lexical_cast. link
  • Igor R.
    Igor R. over 4 years
    This would lead to UB, if to_string returns temporary.