簡體   English   中英

使用boost :: lexical_cast將UUID轉換為字符串時出現編譯錯誤

[英]Boost compile error on converting UUID to string using boost::lexical_cast

我有這個代碼基於SO中的幾個帖子:

boost::uuids::uuid uuid = boost::uuids::random_generator()();
auto uuidString= boost::lexical_cast<std::string>(uuid);

但是當我編譯這段代碼時,我收到了這個錯誤:

Source type is neither std::ostream`able nor std::wostream`able     C:\Local\boost\boost\lexical_cast\detail\converter_lexical.hpp  

我該如何解決這個錯誤?

我想你錯過了包含:

住在Coliru

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

int main() {
    boost::uuids::uuid uuid = boost::uuids::random_generator()();
    auto uuidString = boost::lexical_cast<std::string>(uuid);
}

你可以嘗試:

std::stringstream ss;
std::string       uuidStr;

boost::uuids::uuid uuid = boost::uuids::random_generator()();

ss << uuid;
ss >> uuidStr;

文檔說明:

流操作員

標准輸入和輸出流運算符<<和>>由boost / uuid / uuid_io.hpp提供。 uuid的字符串表示是hhhhhhhh -hhhh-hhhh-hhhh-hhhhhhhhhhhhh,其中h是十六進制數字。

boost::uuids::uuid u1; // initialize uuid

std::stringstream ss;
ss << u1;

boost::uuids::uuid u2;
ss >> u2;

assert(u1, u2);

但是lexical_cast應該也可以。

也許您應該檢查uuid實際包含的內容,以確定生成的uuid是否有問題。

也:

boost::uuids::uuid u; // initialize uuid

std::string s1 = to_string(u);

根據文檔應該稍快一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM