2010-08-10 41 views

Trả lời

36

Bạn có thể làm điều này dễ dàng hơn một chút bằng cách sử dụng boost :: lexical_cast sử dụng 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(); 
10

Bạn có thể bao gồm <boost/uuid/uuid_io.hpp> và sau đó sử dụng toán tử để chuyển đổi uuid thành std::stringstream. Từ đó, đó là một chuyển đổi tiêu chuẩn thành const char* khi cần thiết.

Để biết chi tiết, hãy xem 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(); 

(Để biết chi tiết về lý do tại sao bạn cần "tmp" chuỗi, see here.)

1

Bạn sử dụng các chức năng hoạt động vào tăng/uuid/uuid_io.hpp.

boost::uuids::uuid u; 

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

Chỉ trong trường hợp, cũng có boost::uuids::to_string là, hoạt động như sau:

#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(); 
+2

Đối với những người làm việc với các phiên bản tăng cổ: Phương pháp này được giới thiệu trong 1,44. Xem http://www.boost.org/doc/libs/1_43_0/boost/uuid/uuid_io.hpp http://www.boost.org/doc/libs/1_44_0/boost/uuid/uuid_io.hpp – user1556435

+1

Điều này phải là câu trả lời đúng, IMHO. –

Các vấn đề liên quan