cereal para C++: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es cereal y para qué sirve?

\n\n

cereal es una biblioteca ligera, header-only para la serialización de datos en el lenguaje C++. Permite transformar estructuras de datos complejas (clases, estructuras, contenedores STL) en formatos como JSON, XML y formato binario, y luego restaurarlos. Esto es fundamental para guardar el estado de un programa, transmitir datos por red, registrar información o intercambiar datos entre diferentes lenguajes de programación.

\n\n

A diferencia de soluciones más pesadas (como Boost.Serialization), cereal no requiere compilación previa ni configuración compleja. Está compuesta completamente por archivos de cabecera, lo que simplifica su integración en cualquier proyecto. Las principales ventajas son:

\n
    \n
  • Header-only: no es necesario compilar la biblioteca por separado.
  • \n
  • Soporte para C++11/14/17: utiliza las características modernas del lenguaje.
  • \n
  • Flexibilidad: soporta tipos personalizados, punteros inteligentes, polimorfismo.
  • \n
  • Rendimiento: el formato binario es muy rápido y compacto.
  • \n
\n\n

Instalación

\n\n

Dado que cereal es una biblioteca header-only, la instalación se reduce a copiar los archivos de cabecera en tu proyecto. No se requiere pip install ni npm install para C++. Aquí tienes dos formas principales:

\n\n

Forma 1: Instalación manual (recomendada para aprendizaje)

\n
    \n
  1. Descarga la última versión desde GitHub (botón verde "Code" → "Download ZIP").
  2. \n
  3. Descomprime el archivo.
  4. \n
  5. Copia la carpeta include/cereal a la carpeta de tu proyecto.
  6. \n
  7. En el código, incluye: #include "cereal/cereal.hpp".
  8. \n
\n\n

Forma 2: A través del gestor de paquetes vcpkg

\n
# Instala vcpkg si aún no lo tienes\ngit clone https://github.com/Microsoft/vcpkg.git\ncd vcpkg\n.\\bootstrap-vcpkg.bat  # Windows\n./bootstrap-vcpkg.sh   # Linux/macOS\n\n# Instala cereal\n.\\vcpkg install cereal  # Windows\n./vcpkg install cereal  # Linux/macOS\n\n# Conéctalo en CMakeLists.txt:\n# find_package(cereal CONFIG REQUIRED)\n# target_link_libraries(tu_proyecto PRIVATE cereal::cereal)\n
\n\n

Inicio rápido con ejemplo de código

\n\n

Vamos a crear una estructura simple Person y serializarla en JSON. Crea un archivo main.cpp:

\n\n
#include <iostream>\n#include <fstream>\n#include <string>\n#include <cereal/archives/json.hpp>\n#include <cereal/types/string.hpp>\n\nstruct Person {\n    std::string name;\n    int age;\n\n    // Método obligatorio para cereal\n    template<class Archive>\n    void serialize(Archive& archive) {\n        archive(name, age);\n    }\n};\n\nint main() {\n    Person p1{"Alice", 30};\n\n    // Escritura a archivo\n    {\n        std::ofstream file("person.json");\n        cereal::JSONOutputArchive archive(file);\n        archive(CEREAL_NVP(p1));  // CEREAL_NVP — para campos con nombre\n    }\n\n    // Lectura desde archivo\n    Person p2;\n    {\n        std::ifstream file("person.json");\n        cereal::JSONInputArchive archive(file);\n        archive(p2);\n    }\n\n    std::cout << "Name: " << p2.name << ", Age: " << p2.age << std::endl;\n    return 0;\n}\n
\n\n

Compila: g++ -std=c++11 main.cpp -o main. Después de ejecutarlo, aparecerá un archivo person.json con el contenido {"p1": {"name": "Alice", "age": 30}}.

\n\n

Métodos y funciones principales

\n\n

A continuación se muestran los elementos clave de la biblioteca. Todos los ejemplos asumen la inclusión de #include <cereal/cereal.hpp> y los archivos de archivo correspondientes.

\n\n

1. cereal::JSONOutputArchive

\n

Qué hace: Crea un archivo para escribir datos en

Recommendations