Heim > Backend-Entwicklung > C#.Net-Tutorial > 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
Freigeben: 2019-04-29 12:22:03
nach vorne
4659 Leute haben es durchsucht

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>
Nach dem Login kopieren

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!");
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage