#define PLAQUI_STRING_H
#include <string>
+#include <sstream>
#include <vector>
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 {
static String join(const std::vector<std::string>& 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;
+ }
+
};
}