fmt
Qué es fmt: una biblioteca de formato C++, no un servicio de registros
Entiende las API reales de fmt: valores tipados, destinos de salida, cabeceras y la diferencia entre comprobar un formato y compilarlo.
Qué aprenderás
- Identifica la unidad que ofrece
- Elige la cabecera correspondiente
- Distingue tres mecanismos
Antes de empezar
- Valores, referencias, cadenas y destinos de construcción en C++
- Distinguir expectativas documentadas de resultados medidos
Traza comportamientos concretos de fmt y elige una integración con límites explícitos de salida, vida útil y verificación.
Conclusiones clave
- fmt es una dependencia C++ con varias API de salida, no un servicio.
- Las funciones de las cabeceras y la versión están vinculadas al commit inspeccionado.
- Comprobación estática, análisis en ejecución y compilación del formato son mecanismos distintos.
Identifica la unidad que ofrece
fmt convierte valores C++ y una cadena de formato en texto. fmt::format devuelve un std::string, fmt::print escribe en un flujo de salida y las variantes format_to escriben mediante iteradores o destinos limitados. Sirve dentro de herramientas de consola, diagnósticos y generadores de informes. Es una dependencia que se compila o enlaza, no un servicio con base de datos, proveedor de modelos o panel de despliegue.
La revisión está fijada al commit 44f2c7a, comprobado el 8 de septiembre de 2026. Su macro FMT_VERSION vale 120201, equivalente a 12.2.1; identifica el código inspeccionado, pero no demuestra que un gestor de paquetes distribuya exactamente ese commit. El repositorio incluye la licencia MIT. Conserva la revisión y los avisos aplicables al evaluar una actualización.
Elige la cabecera correspondiente
En esta revisión, fmt/core.h es la API mínima principal y fmt/base.h solo la incluye como cabecera de compatibilidad. fmt/format.h añade format con resultado de cadena y otras capacidades. Cabeceras opcionales exponen rangos, fechas, colores, utilidades del sistema y almacenamiento dinámico de argumentos. Incluye la API necesaria sin interpretar cada cabecera como un componente desplegable independiente.
Esta organización cambió en el commit inspeccionado del 8 de septiembre. Un tutorial de otra revisión puede nombrar una cabecera principal diferente. Una explicación fiable enlaza una ruta y revisión concretas; no mezcla instrucciones de paquetes antiguos con el estado actual de main. Los ejemplos que necesitan un std::string en esta serie incluyen format.h.
Distingue tres mecanismos
Un literal aceptado por fmt::format_string puede comprobarse durante la compilación en un compilador con el comportamiento consteval de C++20 requerido. Una cadena envuelta en fmt::runtime se comprueba durante la ejecución. FMT_COMPILE es otro mecanismo: con el soporte adecuado genera código especializado para un formato fijo. Son funciones relacionadas, no garantías equivalentes.
La comprobación de tipos no asegura todas las operaciones circundantes. Una vista necesita datos subyacentes válidos, un puntero de salida necesita almacenamiento suficiente y el texto destinado a HTML o a un protocolo de registros requiere tratamiento específico. Define primero el resultado y su propiedad; después decide si fmt mejora esa parte de la aplicación.
Pasos de implementación
- 1
Decide entre cadena, flujo y destino limitado.
- 2
Registra el commit y la configuración del compilador.
- 3
Incluye la cabecera pertinente y verifica una salida concreta.
- 4
Revisa por separado propiedad y contexto de salida.
Ejemplo para copiar
#include <fmt/format.h>
#include <cassert>
int main() {
const auto message = fmt::format("id={:04}", 7);
assert(message == "id=0007");
}Preguntas frecuentes
¿fmt necesita un servidor o una clave API?
No. La ruta revisada es una integración de biblioteca C++, no un modelo remoto ni un servicio de formato alojado.
¿12.2.1 identifica un paquete exacto?
No. Es el valor de la macro en el código fijado; revisión del paquete, opciones y disponibilidad se comprueban aparte.
Fuentes
- README.mdFuente verificada 2026-09-08
- LICENSEFuente verificada 2026-09-08
- CMakeLists.txtFuente verificada 2026-09-08
- doc/api.mdFuente verificada 2026-09-08
- include/fmt/core.hFuente verificada 2026-09-08
- include/fmt/base.hFuente verificada 2026-09-08
- include/fmt/format.hFuente verificada 2026-09-08
- include/fmt/compile.hFuente verificada 2026-09-08