¿Existe una biblioteca C/C++ que pueda formatear de forma similar a printf
una cadena de formato, pero que verifique si esta cadena de formato cumple ciertas restricciones y coincide con los argumentos?
La razón es que el programa debe tomar una cadena de formato de la entrada del usuario, como plantilla para una serie de nombres de archivo, con una variable de índice de número entero. Entonces el usuario podría proporcionar image%d.png
o image%.6d.png
, pero hack_%d_%s
no sería aceptado.
La respuesta más inmediata a su pregunta es, creo, tinyformat , que solo tiene como objetivo proporcionar un printf()
reemplazo seguro para tipos y está en uso. Sin embargo, no te recomendaría que elijas ese.
Probablemente le sirva mejor fmt , que tiene un alcance más amplio pero hace más, ha visto más desarrollo y tiene un uso más amplio (también está el FastFormat más antiguo ). Como verás en los enlaces, no te fallarán printf()
.
Si desea que lo haga usted mismo lo más básico posible, existe una idea de implementación segura basada en plantillas variádicas de la printf()
luminaria de C++ Andrei Alexandrescu de 20120; consulte esta respuesta de StackOverflow.com para obtener más detalles.
Una nota final fuera del alcance del escenario específico de OP: con C ++ 17, se ha vuelto posible ir incluso más allá de todas estas opciones y usar constexpr
constantes de cadena de formato para realizar la verificación completamente en tiempo de compilación en lugar de en tiempo de ejecución. lo cual sería increíble (asumiendo, por supuesto, que conoce su formato de antemano). Nada de eso se ha lanzado a partir de ahora (que yo sepa).
Ira Baxter
einpoklum