X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/f27c218d18ebf7198e07249aca1eed625da914fd..9523acd2d7be7b8bbbf6d8c786c68c91f9fcc700:/Server/include/plaqui/server/string.h diff --git a/Server/include/plaqui/server/string.h b/Server/include/plaqui/server/string.h index ecd253a..f29e1b4 100644 --- a/Server/include/plaqui/server/string.h +++ b/Server/include/plaqui/server/string.h @@ -29,12 +29,28 @@ #define PLAQUI_STRING_H #include +#include #include namespace PlaQui { namespace Server { + /** + * Convierte de un tipo a otro (de p1 a p2) a través de un stringstream. + * + * \param p1 Parámetro origen. + * \param p1 Parámetro destino, al que se quiere convertir. + * + * \return Referencia a p2. + */ + template < class T1, class T2 > static T2& to(const T1& p1, T2& p2) { + std::stringstream ss(p1); + ss << p1; + ss >> p2; + return p2; + } + /// Conexión. class String: public std::string { @@ -104,6 +120,29 @@ namespace Server { static String join(const std::vector& v, const std::string& sep); + /** + * Convierte un string a otro tipo. + * + * \param p Parametro del tipo al que se quiere convertir. + */ + template < class T > T& to(T& p) const { + std::stringstream ss(*this); + ss >> p; + return p; + } + + /** + * Convierte un tipo a string. + * + * \param p Parametro del tipo que se quiere convertir a string. + */ + template < class T > String& from(const T& p) { + std::stringstream ss; + ss << p; + ss >> (*this); + return *this; + } + }; }