Maison  >  Article  >  développement back-end  >  Une brève discussion sur deux méthodes de génération de GUID en C++

Une brève discussion sur deux méthodes de génération de GUID en C++

little bottle
little bottleavant
2019-04-29 12:22:034591parcourir

GUID est un composant couramment utilisé dans le développement de logiciels, utilisé pour générer des objets uniques dans des langages tels que C#, Java et Python, en raison de Leur bibliothèque standard est relativement riche, donc la génération de GUID est relativement simple et peut souvent se faire en une ou deux lignes de code. Ni le langage C++ lui-même ni la bibliothèque standard ne fournissent d'API pour générer des GUID. Par conséquent, C++ ne peut pas être utilisé pour générer directement des GUID. Cet article présente deux méthodes de création indirecte de GUID à l'aide de C++ : 1) en appelant la fonction Win32API-CoCreateGuid 2) à l'aide de la bibliothèque Boost ;

Utilisez la fonction CoCreateGuid

CoCreateGuid est une fonction API fournie par le système Windows lui-même et se trouve dans le fichier d'en-tête objbase.h Par conséquent, nous devons d'abord inclure le fichier d'en-tête :

include <objbase.h>

Le code pour appeler CoCreateGuid est le suivant :

  GUID guid;
  HRESULT h = CoCreateGuid(&guid);
  if (h == S_OK)
   ans = GuidToString(guid);
  else
   throw runtime_error("generate guid failed!");

Dans le code ci-dessus, si le GUID est créé avec succès, la valeur de h est S_OK, et s'il échoue, ce sont d'autres indicateurs. HRESULT est un type de valeur de retour des composants COM, veuillez vous référer à HRESULT. La fonction GuidToString est utilisée pour convertir le Guid généré en std :: string. Tutoriels associés :

Tutoriel vidéo 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);
}

L'avantage de cette méthode de génération de GUID basée sur Win32API est qu'elle n'a pas besoin de s'appuyer sur d'autres bibliothèques. L'inconvénient est qu'elle ne peut pas être croisée. -plateforme et ne peut être utilisé que sur la plateforme Windows.

Utiliser la bibliothèque Boost

Il est relativement simple d'utiliser la bibliothèque Boost pour générer le GUID. Le code est le suivant :

#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;

Chargez d'abord le package, puis utilisez le boost. Espace de noms ::uuids Les types et fonctions associés peuvent créer un GUID de type std::string. La méthode de génération de GUID basée sur BOOST est relativement simple, mais l'inconvénient est qu'elle nécessite l'introduction d'une bibliothèque Boost supplémentaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer