Estoy buscando una API que se pueda usar para volcar la mayoría de las estructuras de datos, ¿hay alguna en c/C++?¿Hay algo así como var_dump de PHP en c/C++?
Respuesta
boost tiene una biblioteca de serialización que puede usar explícitamente para hacer que sus estructuras de datos sean descargables.
Si desea que suceda más automáticamente, sus opciones son sombrías. Un programa C++ puede inspeccionar sus propios símbolos de depuración o compilar algún código adicional, tal vez generado automáticamente con referencia a la salida GCC-XML, o utilizando una herramienta como OpenC++ para autogenerar algunos metadatos.
Estoy buscando una API que se pueda usar para volcar la mayoría de las estructuras de datos, ¿hay alguna en c/C++?
Respuesta corta: No, no lo hay.
Respuesta más larga: C++ no tiene reflejo. Es decir, no hay forma de analizar estructuras de datos desconocidas en tiempo de ejecución. Tendrá que escribir rutinas de volcado usted mismo para cualquier estructura de datos que desee volcar, basándose en lo que está disponible para sus miembros de datos.
Sin embargo, tenga en cuenta que C++ tiene una gran cantidad de herramientas para que sea más fácil. Por ejemplo, dada una sencilla genérica dump()
plantilla:
template< typename T >
inline void dump(std::ostream& os, const T& obj) {os << obj;}
los elementos de cualquier secuencia se puede volcar el uso de esta función simple:
template< typename OutIt >
void dump(std::ostream& os, OutIt begin, OutIt end)
{
if(begin != end)
os << *begin++;
while(begin != end) {
os << ", ";
dump(*begin++);
}
}
Necesita una especialización para 'std :: pair <>' para volcar set <> sy map <> s. Algunas complicaciones, p. cadenas de escape, precisión de coma flotante ... –
@Tony: Sí, para mapas y multimaps (no para conjuntos, sin embargo), de hecho, es necesaria una sobrecarga. (Sin especialización, por cierto, ya que tendría que ser una especialización _partial_, que no tenemos para plantillas de funciones, porque hay sobrecarga ...) Y, sí, para algunos otros tipos es posible que desee agregar más sobrecargas. Sin embargo, deliberadamente dejé esto como un simple ejemplo. Ya te lleva bastante lejos como está. – sbi
- 1. ¿hay algo así como isset de php en javascript/jQuery?
- 2. ¿Hay algo así como i en rango (longitud) en PHP?
- 3. ¿Hay algo así como PHP preg_replace_callback() en javascript?
- 4. ¿Hay algo así como indicadores en Lua?
- 5. ¿Hay algo así como find_if en Java?
- 6. ¿Hay algo así como un modelo funcional?
- 7. ¿Hay algo así como "global ::" para VB.NET?
- 8. ¿Hay algo así como Codecademy para Java
- 9. ¿Hay algo así como WMI para Linux?
- 10. ¿Hay algo así como `last` for` map`?
- 11. ¿Hay algo así como AutoMapper para Scala?
- 12. ¿Hay algo así como bpython para Ruby?
- 13. ¿Hay algo así como Incanter para Haskell?
- 14. ¿Hay algo así como TimeSpan en el desarrollo de Android?
- 15. ¿Hay algo así como sesión en la aplicación de Windows?
- 16. ¿Hay algo así como herencia de anotación en java?
- 17. ¿Hay algo así como un carácter comodín en Java?
- 18. ¿Hay algo así como Eclipse Perspective en Visual Studio?
- 19. ¿Hay algo así como un bool nulo en vb.net
- 20. ¿Hay algo así como linux ptrace syscall en Windows?
- 21. ¿Hay algo así como un flujo nulo en Ruby?
- 22. ¿Hay algo así como MasterPages en CodeIgniter Framework?
- 23. ¿Hay algo así como Restrictions.eq (verdadero, falso) en Criteria API?
- 24. ¿Hay algo así como una clase interna en Java?
- 25. ¿Hay algo así como printf en Action Script 3?
- 26. ¿Hay algo así como una altura de línea automática?
- 27. ¿Hay algo así como auto para los métodos de clase?
- 28. ¿Hay algo así como un desminificador de javascript (deobfuscator)?
- 29. ¿Hay algo así como ZenTest/Autotest para Java y JUnit
- 30. D-Bus: ¿hay algo así como un "sniffer D-Bus"?
Yo no lo creo. C/C++ no está diseñado para este tipo de cosas. Lo mejor es que te busques en Internet lo que los diferentes tipos de datos pueden hacer, ect. –