GUID はソフトウェア開発で一般的に使用されるコンポーネントであり、C#、Java、Python などの言語で一意のオブジェクトを生成するために使用されます。標準ライブラリは比較的豊富であるため、GUID の生成は比較的単純で、多くの場合 1 ~ 2 行のコードで実行できます。 C 言語自体にも標準ライブラリにも GUID を生成するための API が用意されていないため、C を使用して GUID を直接生成することはできません。この記事では、C を使用して GUID を間接的に作成する 2 つの方法、1) Win32API-CoCreateGuid 関数を呼び出す方法、2) Boost ライブラリを使用する方法を紹介します。
CoCreateGuid は Windows システム自体によって提供される API 関数であり、objbase.h
ヘッダー ファイルにあります。ヘッダー ファイル:
include <objbase.h>
CoCreateGuid を呼び出すコードは次のとおりです:
GUID guid; HRESULT h = CoCreateGuid(&guid); if (h == S_OK) ans = GuidToString(guid); else throw runtime_error("generate guid failed!");
上記のコードでは、GUID が正常に作成された場合、h の値は S_OK になり、失敗した場合は h の値が S_OK になります。 、その他のフラグです。 HRESULT は COM コンポーネントの戻り値の一種です。HRESULT を参照してください。 GuidToString 関数は、生成された Guid を std::string に変換するために使用されます。関連チュートリアル: C ビデオ チュートリアル
std::string GuidToString(const GUID &guid) { char buf[64] = { 0 }; sprintf_s(buf, sizeof(buf), "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]); return std::string(buf); }
Win32API に基づいて GUID を生成するこの方法の利点は、他のライブラリに依存する必要がないことです。欠点は、相互に使用できないことです。 -platform であり、Windows プラットフォームでのみ使用できます。
Boost ライブラリを使用して GUID を生成するのは比較的簡単です。コードは次のとおりです:
#include <boost/uuid/uuid.hpp> #include <boost/uuid/uuid_generators.hpp> #include <boost/uuid/uuid_io.hpp> boost::uuids::uuid uid = boost::uuids::random_generator()(); const string uid_str = boost::uuids::to_string(uid); cout << uid_str << endl;
最初にパッケージをロードし、次にブースト ライブラリを使用します。 ::uuids 名前空間 関連する型と関数は、std::string 型の GUID を作成できます。 BOOST に基づいて GUID を生成する方法は比較的単純ですが、追加の Boost ライブラリを導入する必要があるという欠点があります。
以上がC++ で GUID を生成する 2 つの方法についての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。