X-Git-Url: https://git.llucax.com/z.facultad/75.42/string.git/blobdiff_plain/91ae14ba4499be590813ab84a75f5c027ac12c11..b18e440563dabec6bef71cbfa954bc5e38c84ca6:/universalstring.cpp diff --git a/universalstring.cpp b/universalstring.cpp index 68d09f5..245eac6 100644 --- a/universalstring.cpp +++ b/universalstring.cpp @@ -14,83 +14,50 @@ * $Id$ */ +#include "ascii.h" +#include "unicode.h" #include "universalstring.h" -#include - -#ifdef DEBUG -# include -#endif - -UniversalString::UniversalString(void): string(NULL) { -#ifdef DEBUG - std::cerr << "En constructor de UniversalString." << std::endl; -#endif -} - -UniversalString::UniversalString(const UniversalString& str): string(NULL) { -#ifdef DEBUG - std::cerr << "En constructor de copia de UniversalString." << std::endl; -#endif - // Llamo al operador igual. - *this = str; -} - -UniversalString::~UniversalString(void) { -#ifdef DEBUG - std::cerr << "En destructor de UniversalString." << std::endl; -#endif -} - -UniversalString& UniversalString::operator=(const UniversalString& str) { -#ifdef DEBUG - std::cerr << "En operator= de UniversalString." << std::endl; -#endif - // Si tengo memoria reservada, la libero. - if (string) { - delete string; - string = NULL; +#include "quicksort.h" +#include +#include + +using namespace std; + +int main(void) { + + // Ascii. + UniversalString< Ascii > sa("Hola mundo"); +// cout << sa << endl; + cin >> sa; + cout << sa << endl; +/* + // Unicode. + UniversalString< Unicode > su("Chau mundo"); + cout << su << endl; + cin >> su; + cout << su << endl; + + // Conversión. + sa = su; + cout << su << endl; +*/ + // Agrego cosas al vector para ordenar. + vector< UniversalString< Ascii > > v; + v.push_back(sa); + v.push_back(UniversalString< Ascii >("Hola mundo!")); + v.push_back(UniversalString< Ascii >("Chau mundo!")); + // Imprimo. + cout << "Sin ordenar (" << v.size() << "):" << endl; + for (int i = 0; i < v.size(); i++) { + cout << v[i] << endl; } - // Si el string a copiar no es nulo, aloco memoria y copio. - if (str.string) { // TODO creo que necesito len y max. - string = new T[strlen(str.string) + 1]; - } - return *this; -} - -bool UniversalString::operator<(const UniversalString& str) { -#ifdef DEBUG - std::cerr << "En operator< de UniversalString." << std::endl; -#endif - return caracter < str.caracter; -} - -bool UniversalString::operator==(const UniversalString& str) { -#ifdef DEBUG - std::cerr << "En operator== de UniversalString." << std::endl; -#endif - return caracter == str.caracter; -} - -short UniversalString::operator short(void) { -#ifdef DEBUG - std::cerr << "En cast de UniversalString a short." << std::endl; -#endif - return static_cast(caracter); -} - -/// Volcado a un stream de salida. -std::ostream& operator<<(std::ostream& out, const UniversalString& str) { -#ifdef DEBUG - std::cerr << "En operator<< de UniversalString." << std::endl; -#endif - return out << str.caracter; -} - -/// Captura desde un stream de entrada. -std::istream& operator>>(std::istream& in, const UniversalString& str) { -#ifdef DEBUG - std::cerr << "En operator>> de UniversalString." << std::endl; -#endif - return in >> str.caracter; + // Ordeno. + quicksort(v, 0, 2); + // Imprimo. + cout << "Ordenado:" << endl; + copy(v.begin(), v.end(), ostream_iterator< UniversalString< Ascii > >(cout, + "\n")); + + return 0; }