C ++ এ বুস্ট ব্যবহার করে ইউআইডি প্রজন্মের উদাহরণ


96

আমি ঠিক এলোমেলো ইউআইডি'র উত্পাদন করতে চাই, কারণ আমার প্রোগ্রামে অনন্য শনাক্তকারী থাকা খুব গুরুত্বপূর্ণ। আমি বুস্ট ইউইউডি তে নজর রেখেছি , তবে আমি ইউইউডি উত্পন্ন করতে পরিচালনা করতে পারি না কারণ কোন শ্রেণী এবং পদ্ধতিটি ব্যবহার করতে হবে তা আমি বুঝতে পারি না।

কেউ আমাকে কীভাবে এটি অর্জন করতে পারে তার কোনও উদাহরণ দিতে পারলে আমি প্রশংসা করব।

উত্তর:


167

একটি প্রাথমিক উদাহরণ:

#include <boost/uuid/uuid.hpp>            // uuid class
#include <boost/uuid/uuid_generators.hpp> // generators
#include <boost/uuid/uuid_io.hpp>         // streaming operators etc.

int main() {
    boost::uuids::uuid uuid = boost::uuids::random_generator()();
    std::cout << uuid << std::endl;
}

উদাহরণ আউটপুট:

7feb24af-fc38-44de-bc38-04defc3804de


4
এবং আপনি কিভাবে এটি একটি স্ট্রিং বরাদ্দ করবেন? কারণ আমার প্রতিটি দৃষ্টান্তের জন্য একটি সাধারণ বেস রয়েছে এবং ইউইউডিটি বেসের সাথে সংলগ্ন করা দরকার। আবার ধন্যবাদ!
নিকোলা

22
@ এনিক: স্ট্রিমিং সমর্থনটি ব্যবহার করুন - এর একটি stringstreamউদাহরণ রয়েছে। বা boost::lexical_cast<std::string>(uuid)আপনার জন্য এটি করতে দিন।
জর্জি ফ্রিজচে

16
ডাবল প্যারান্থেসি হিসাবে: প্রথম উদাহরণ তৈরি করে random_generator, দ্বিতীয়টি operator()সেই উদাহরণটিতে ব্যবহার করে। আপনি জেনারেটরটি সংরক্ষণ করুন এবং operator()যদি আপনি একাধিক ইউউইড তৈরি করতে চান তবে এটিতে কল করা উচিত :random_generator rg; uuid ui = rg();
জর্জিট ফ্রিটস্কে

36
@ নিকোলা: ইউয়েডগুলি স্ট্রিংয়েটিংয়ের জন্য বুস্ট :: ইউইডস :: টু স্ট্রিং (ইউইড) ব্যবহার করুন
কিং

4
@ জর্জিফ্রিটস্কে মিলে, সঠিক সময় এবং মেশিনের স্বতন্ত্র নেটওয়ার্ক ঠিকানাটি স্বতন্ত্র। আমি যদিও এটি হ্যাশ ফাংশন জন্য ভাল কি হতে পারে। পরে আমার স্পষ্ট মানগুলির দরকার নেই। তবে আপনার ধারণাটি আমার কাছে একটি ধারণা নিয়ে এসেছে। সময় এবং নেটওয়ার্ক ঠিকানাটি এলোমেলো নম্বর জেনারেটরের জন্য বা তার জন্য বীজ হিসাবে ব্যবহার করা ভাল।
দানিজার

36

জর্জি ফ্রিত্শের উত্তর ঠিক আছে তবে কিছুটা বিভ্রান্তিকর হতে পারে। আপনার একাধিক ইউইউডের প্রয়োজন হলে আপনার জেনারেটরটি পুনরায় ব্যবহার করা উচিত। সম্ভবত এটি এইভাবে পরিষ্কার হয়:

#include <iostream>

#include <boost/uuid/uuid.hpp>            // uuid class
#include <boost/uuid/uuid_generators.hpp> // generators
#include <boost/uuid/uuid_io.hpp>         // streaming operators etc.


int main()
{
    boost::uuids::random_generator generator;

    boost::uuids::uuid uuid1 = generator();
    std::cout << uuid1 << std::endl;

    boost::uuids::uuid uuid2 = generator();
    std::cout << uuid2 << std::endl;

    return 0;
}

4
কেন আপনি জেনারেটর পুনরায় ব্যবহার করা উচিত? এটি কি পারফরম্যান্স অপটিমাইজেশন বা সুরক্ষা টিপ?
ফ্রেড

5
কোনও নতুন জেনারেটর ব্যবহার করে স্বতন্ত্রতার সমস্যা দেখা দিলে এটি খুব ভাল সর্বজনীন অনন্য আইডি হবে না।
xaxxon

@ এক্সএক্সএক্সন নতুন জেনারেটর তৈরি করার সময় স্বতন্ত্রতা সমস্যা সম্পর্কিত আপনার কাছে কোনও ডকুমেন্টেশন আছে?
সনিশ কুমার

4
@ সানেশকুমার এটি একটি "সর্বজনীন অনন্য সনাক্তকারী" কোনও কারণে "এই জেনারেটরের অনন্য সনাক্তকারী" নন।
xaxxon

4
আমার কাছ থেকে শিখুন এবং জেনারেটরের থ্রেড স্থানীয় করুন। এগুলি বীজের পক্ষে খুব ব্যয়বহুল
জেমস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.