Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 파이썬 사전(Dictionary) 읽는 방법 총정리

C++/파이썬 바인딩의 기본 개념

C++와 파이썬을 연결하는 바인딩 도구는 매우 다양합니다. C++ 코드에서 파이썬 사전(dictionary) 객체를 읽어오려면, 결국 두 언어 사이를 어떤 방식으로 연결하고 통신할 것인지가 핵심이 됩니다.

방법 1: 바인딩 라이브러리 활용하기

대부분의 바인딩 라이브러리는 파싱 작업을 자체적으로 처리해 주기 때문에 별도의 변환 과정 없이 파이썬 객체에 바로 접근할 수 있습니다. 대표적인 라이브러리는 다음과 같습니다.

  • Boost.Python: C++에서 파이썬 객체를 네이티브처럼 다룰 수 있게 해주는 가장 널리 알려진 라이브러리입니다.
  • pybind11: 헤더 온리(header-only) 방식의 경량 라이브러리로, 최신 C++ 문법과 잘 어울립니다.
  • Python C API: 파이썬 인터프리터에 내장된 공식 C 인터페이스로, PyDict_GetItem 같은 함수를 통해 사전의 키와 값을 직접 조회할 수 있습니다.

이러한 라이브러리를 사용하면 사전 객체의 키(key)와 값(value)을 자료구조 그대로 변환 없이 읽어올 수 있다는 장점이 있습니다.

방법 2: JSON·XML 등 중간 데이터 형식 사용하기

또 다른 접근 방식은 JSON이나 XML 같은 중간 데이터 전송 형식을 활용하는 것입니다. 이 경우 두 언어 간에 데이터를 문자열 형태로 주고받고, 각 언어 쪽에서 해당 형식을 지원하는 라이브러리로 직렬화(serialization)와 역직렬화(deserialization)를 수행합니다.

일반적인 처리 흐름은 다음과 같습니다.

  1. 파이썬에서 json.dumps()로 사전을 JSON 문자열로 변환합니다.
  2. 변환된 문자열을 C++ 쪽으로 전달합니다.
  3. C++에서 nlohmann/json 같은 라이브러리로 문자열을 파싱해 사용합니다.

이 방식은 프로세스 간 통신(IPC)이나 네트워크 기반 연동 환경에서 특히 유용하며, 두 언어가 서로 강하게 결합되지 않아 유지보수가 쉽다는 장점이 있습니다.

정리

두 언어를 긴밀하게 연동해야 한다면 Boost.Python이나 pybind11 같은 바인딩 라이브러리를, 느슨한 결합과 범용성이 필요하다면 JSON·XML 기반의 중간 형식 변환 방식을 선택하는 것이 좋습니다. 프로젝트의 요구사항과 실행 환경에 맞춰 적절한 방법을 고르는 것이 중요합니다.