¿Qué es cereal y para qué sirve?
\n\ncereal 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\nA 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
Instalación
\n\nDado 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:
Forma 1: Instalación manual (recomendada para aprendizaje)
\n- \n
- Descarga la última versión desde GitHub (botón verde "Code" → "Download ZIP"). \n
- Descomprime el archivo. \n
- Copia la carpeta
include/cereala la carpeta de tu proyecto. \n - En el código, incluye:
#include "cereal/cereal.hpp". \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\nInicio rápido con ejemplo de código
\n\nVamos a crear una estructura simple Person y serializarla en JSON. Crea un archivo main.cpp:
#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\nCompila: 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}}.
Métodos y funciones principales
\n\nA 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.
1. cereal::JSONOutputArchive
\nQué hace: Crea un archivo para escribir datos en
También en la biblioteca
Caché en TypeScript: biblioteca node-cache
Aprendizaje automático en JavaScript (Node.js): bibliotecas para ML
Mockery para PHP: guía completa con ejemplos prácticos
tsyringe TypeScript: guía completa con ejemplos prácticos
Envío de correo electrónico en TypeScript: guía completa con nodemailer y SMTP