Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion über zwei Methoden zum Generieren von GUIDs in C++

Eine kurze Diskussion über zwei Methoden zum Generieren von GUIDs in C++

little bottle
little bottlenach vorne
2019-04-29 12:22:034585Durchsuche

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;

Verwenden Sie die CoCreateGuid-Funktion

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.

Verwenden Sie die Boost-Bibliothek

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen