#define PLAQUI_STRING_H
#include <string>
+#include <sstream>
+#include <vector>
-namespace Plaqui {
+namespace PlaQui {
- /// Conexión.
+namespace Server {
+
+ /**
+ * 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.
/**
* Destructor.
*/
- virtual ~String(void) {}
+ virtual ~String(void);
+
+ /**
+ * Constructor.
+ */
+ String(void);
/**
* Constructor.
*/
String(const std::string& str);
+ /**
+ * Constructor a partir de un vector.
+ * Convierte el vector en string uniendo sus componentes a traves
+ * del separador.
+ *
+ * \param v Vector.
+ * \param sep Separador.
+ */
+ String(const std::vector<std::string>& v,
+ const std::string& sep);
+
/**
* 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);
*/
String& to_lower(void);
+ /**
+ * Fracciona una cadena convirtiendola en un vector.
+ *
+ * \param sep Caracter usado como separador.
+ */
+ std::vector<std::string> split(char sep) const;
+
+ /**
+ * Concatena los elementos de un vector.
+ *
+ * \param v Vector.
+ * \param sep Separador.
+ */
+ 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;
+ }
+
};
}
+}
+
#endif // PLAQUI_STRING_H