>백엔드 개발 >C#.Net 튜토리얼 >C++에서 GUID를 생성하는 두 가지 방법에 대한 간략한 설명

C++에서 GUID를 생성하는 두 가지 방법에 대한 간략한 설명

little bottle
little bottle앞으로
2019-04-29 12:22:034656검색

GUID는 소프트웨어 개발에서 일반적으로 사용되는 구성 요소로, 고유한 개체를 생성하는 데 사용됩니다. C#, Java 및 Python과 같은 언어에서는 표준 라이브러리가 상대적으로 풍부하기 때문에 GUID 생성이 비교적 간단하고 자주 발생합니다. 단 두 줄의 코드만으로 가능합니다. C++ 언어 자체나 표준 라이브러리 모두 GUID 생성을 위한 API를 제공하지 않습니다. 따라서 C++를 사용하여 GUID를 직접 생성할 수 없습니다. 이 기사에서는 C++를 사용하여 GUID를 간접적으로 생성하는 두 가지 방법을 소개합니다. 1) Win32API-CoCreateGuid 함수 호출 2) Boost 라이브러리 사용.

CoCreateGuid 함수 사용

CoCreateGuid는 Windows 시스템 자체에서 제공하는 API 함수이며 objbase.hheader 파일에 있으므로 먼저 헤더 파일을 포함해야 합니다.

include <objbase.h>

CoCreateGuid를 호출하는 코드는 다음과 같습니다.

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

위 코드에서 GUID가 성공적으로 생성되면 h의 값은 S_OK이고, 실패하면 다른 플래그입니다. HRESULT는 COM 구성 요소의 반환 값 유형입니다. HRESULT를 참조하세요. GuidToString 함수는 생성된 Guid를 std::string으로 변환하는 데 사용됩니다. 관련 튜토리얼: 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);
}

Win32API를 기반으로 GUID를 생성하는 이 방법의 장점은 다른 라이브러리에 의존할 필요가 없다는 것입니다. 단점은 크로스 플랫폼이 될 수 없고에서만 사용할 수 있다는 것입니다. 윈도우 플랫폼.

Boost 라이브러리 사용

Boost 라이브러리를 사용하여 GUID를 생성하는 것은 비교적 간단합니다. 코드는 다음과 같습니다.

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

먼저 패키지를 로드한 다음 Boost::uuid 네임스페이스에서 관련 유형과 함수를 사용하여 생성합니다. std::string GUID 유형입니다. BOOST를 기반으로 GUID를 생성하는 방법은 비교적 간단하지만, 추가적인 Boost 라이브러리 도입이 필요하다는 단점이 있습니다.

위 내용은 C++에서 GUID를 생성하는 두 가지 방법에 대한 간략한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제