Heim > Artikel > Backend-Entwicklung > Eine kurze Diskussion über zwei Methoden zum Generieren von GUIDs in C++
GUID ist eine häufig verwendete Komponente in der Softwareentwicklung, die zum Generieren einzigartiger Objekte in Sprachen wie C#, Java und Python verwendet wird Ihre Standardbibliothek ist relativ umfangreich, daher ist die Generierung von GUID relativ einfach und kann oft in ein oder zwei Codezeilen durchgeführt werden. Weder die C++-Sprache selbst noch die Standardbibliothek bieten eine API zum Generieren von GUIDs. Daher kann C++ nicht zum direkten Generieren von GUIDs verwendet werden. In diesem Artikel werden zwei Methoden zur indirekten Erstellung von GUIDs mit C++ vorgestellt: 1) Aufruf der Win32API-CoCreateGuid-Funktion 2) Verwendung der Boost-Bibliothek;
CoCreateGuid ist eine vom Windows-System selbst bereitgestellte API-Funktion und befindet sich in der objbase.h
-Header-Datei. Daher müssen wir zuerst die Header-Datei einbinden:
include <objbase.h>
Der Code zum Aufrufen von CoCreateGuid lautet wie folgt:
GUID guid; HRESULT h = CoCreateGuid(&guid); if (h == S_OK) ans = GuidToString(guid); else throw runtime_error("generate guid failed!");
Wenn im obigen Code die GUID erfolgreich erstellt wurde, ist der Wert von h S_OK, und wenn dies fehlschlägt, sind es andere Flags. HRESULT ist eine Art Rückgabewert von COM-Komponenten, siehe HRESULT. Die GuidToString-Funktion wird verwendet, um die generierte Guid in std::string zu konvertieren. Zugehörige Tutorials: C++-Video-Tutorial
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); }
Der Vorteil dieser auf Win32API basierenden Methode zur GUID-Generierung besteht darin, dass sie nicht auf andere Bibliotheken angewiesen ist. Der Nachteil besteht darin, dass sie nicht übergreifende werden kann -Plattform und kann nur auf der Windows-Plattform verwendet werden.
Es ist relativ einfach, die Boost-Bibliothek zum Generieren einer GUID zu verwenden. Der Code lautet wie folgt:
#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;
Laden Sie zuerst das Paket und verwenden Sie dann den Boost ::uuids-Namespace Die zugehörigen Typen und Funktionen können eine GUID vom Typ std::string erstellen. Die Methode zum Generieren einer GUID basierend auf BOOST ist relativ einfach, der Nachteil besteht jedoch darin, dass eine zusätzliche Boost-Bibliothek eingeführt werden muss.
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über zwei Methoden zum Generieren von GUIDs in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!