Maison > développement back-end > Tutoriel C#.Net > 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
Libérer: 2019-04-29 12:22:03
avant
4702 Les gens l'ont consulté

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>
Copier après la connexion

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!");
Copier après la connexion

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);
}
Copier après la connexion

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;
Copier après la connexion

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!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal