<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    boost uuid 學習筆記

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    #include <vector>
    #include <iostream>
    #include <boost/uuid/uuid.hpp>
    #include <boost/uuid/uuid_generators.hpp>
    #include <boost/uuid/uuid_io.hpp>
    using namespace boost::uuids;
    using namespace std;
    int main()
    {
    //-------------------------
    // 一些std函數的應用
    //-------------------------
    vector<unsigned int> v(16, 7);
    uuid u;
    std::copy(v.begin(), v.end(), u.begin()); // 將一個序列復制到另一個序列中(從begin到end)
    std::fill_n(u.data + 2, 6, 8); // 將數組第二個序列號后的6個值賦為8
    cout <<"/n u first print:" <<u<<endl;
    std::memset(u.data, 0, u.size()); // 將數組中的所有元素都置零
    cout <<"UUID is empty:"<<u.is_nil()<<endl; // 是否全零
    cout <<"u second print:" <<u<<endl; // 再次輸輸出
    //--------------------------
    // uuid的比較(字典序1~9,a~z排序)
    //--------------------------
    uuid u1, u2;
    std::fill_n(u1.begin(), u1.size(), 0xab); // 從第位開始始,后面size()位都賦成0xab
    std::fill_n(u2.begin(), u2.size(), 0x10);
    cout <<"uuid1:"<<u1<<endl<<"uuid2:"<<u2<<endl;
    (u1>=u2)?cout<<"uuid1 is Max equal to uuid2/n":cout<<"uuid2 is Max to uuid1/n";
    //--------------------------
    // UUID 的幾種生成器,它們都是函數對象
    //--------------------------
    // 第一種:
    // Nil生成器(生成一個全零/無效的UUID/is_nil)
    uuid nilUUID1 = nil_generator()(); // 第一個括號是構造函數,第二個是調用重載操作符(operator())
    uuid nilUUID2 = nil_uuid(); // 內聯函數
    cout<< "nilUUID1: "<<nilUUID1<<endl;
    cout<< "nilUUID2: "<<nilUUID2<<endl;
    // 第二種:
    // 字符串生成器(可是c數組,string,wstring,或迭代器指定的字符串區間)
    string_generator sgen;
    uuid strUUID1 = sgen("0123456789abcdef0123456789uvwxyz"); // 沒有隔線分開,uvwxyz會變成ffffff
    uuid strUUID2 = sgen("01234567-89ab-cdef-0123-456789abcdef"); // 有分隔,分隔不能亂隔
    uuid strUUID3 = sgen(L"{01234567-89ab-cdef-0123-456789abcdef}"); // 使用"{}"括起來除{}外不能有16進制外的任何字符
    cout << "strUUID1 value: "<<strUUID1<<endl;
    cout << "strUUID2 value: "<<strUUID2<<endl;
    cout << "strUUID3 value: "<<strUUID3<<endl;
    // 第三種:
    // 名字生成器(參數可以是16進制字符外的字符)
    uuid baseUUID = sgen(L"{01234567-89ab-cdef-0123-456789abcdef}");
    name_generator ngen(baseUUID); // 構造名字生成器,需要一個基準uuid,
    // 只要基準uuid不變,相同字符串總產生相同的uuid
    uuid nameUUID1 = ngen("Ajiaxi"); // 為Ajiaxi生成一個UUID, version是shal算法
    uuid nameUUID2 = ngen("Link"); // 為Link生成一個UUID
    cout << "nameUUID1 value: "<<nameUUID1<<endl;
    cout << "nameUUID2 value: "<<nameUUID2<<endl;
    // 第四種:
    // 隨機生成器(使用boost::random生成隨機種子)
    random_generator rgen;
    uuid ranUUID = rgen(); // 生成一個隨機uuid
    cout << "ranUUID value: "<<ranUUID<<endl;
    getchar();
    return 0;
    }

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全