#define PLAQUI_STRING_H
#include <string>
+#include <sstream>
#include <vector>
namespace PlaQui {
namespace Server {
- /// Conexión.
+ /**
+ * Convierte de un tipo a otro (de p1 a p2) a través de un stringstream.
+ *
+ * \param p1 Parámetro origen.
+ * \param p2 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;
+ }
+
+ /// String con varios métodos útiles.
class String: public std::string {
+ /////////////////////////////////////////////////////////////////////
+ // Métodos.
+
public:
/// Caracteres que son considerados espacios a la hora de parsear.
*/
virtual ~String(void);
+ /**
+ * Constructor.
+ */
+ String(void);
+
/**
* Constructor.
*
/**
* Elmina caracteres al inicio y fin de un string.
*
- * \param c Lista de caracteres a eliminar.
+ * \param clist Lista de caracteres a eliminar.
*/
String& trim(const String& clist = SPACE_CHARS);
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;
+ }
+
};
}