1 /* vim: set et sts=4 sw=4 fdm=marker fmr={,} fdn=1 fo+=t tw=80:
3 * Taller de Programación (75.42).
6 * Ordena texto ASCII o Unicode.
8 * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
9 * Puede copiar, modificar y distribuir este programa bajo los términos de
10 * la licencia GPL (http://www.gnu.org/).
12 * Creado: Mon Sep 22 21:00:15 ART 2003
17 #ifndef UNIVERSALSTRING_H
18 #define UNIVERSALSTRING_H
31 class UniversalString {
33 /// Cadena de caracteres.
34 std::vector<T> string;
39 UniversalString(void) {
41 std::cerr << "En constructor de UniversalString." << std::endl;
45 /// Constructor a partir de un string C.
46 UniversalString(const char* str) {
48 std::cerr << "En constructor de UniversalString a partir de string C."
51 int len = strlen(str);
54 for (int i = 0; i < len; i++) {
55 string.push_back(str[i]);
59 /// Constructor de copia.
60 UniversalString(const UniversalString& str) {
62 std::cerr << "En constructor de copia de UniversalString."
68 virtual ~UniversalString(void) {
70 std::cerr << "En destructor de UniversalString." << std::endl;
74 /// Asignación de una instancia a otra.
75 UniversalString& operator=(const UniversalString& str) {
77 std::cerr << "En operator= de UniversalString." << std::endl;
83 /// Comparación por menor de dos instancias.
84 bool operator<(const UniversalString& str) {
86 std::cerr << "En operator< de UniversalString." << std::endl;
88 return string < str.string;
91 /// Comparación por igual de dos instancias.
92 bool operator==(const UniversalString& str) {
94 std::cerr << "En operator== de UniversalString." << std::endl;
96 return string == str.string;
100 //operator char*(void);
102 /// Volcado a un stream de salida.
103 friend std::ostream& operator<<(std::ostream& out,
104 const UniversalString<T>& str) {
106 std::cerr << "En operator<< de UniversalString." << std::endl;
108 std::copy(str.string.begin(), str.string.end(),
109 std::ostream_iterator<T>(out, ""));
113 /// Captura desde un stream de entrada.
114 friend std::istream& operator>>(std::istream& in,
115 const UniversalString<T>& str) {
117 std::cerr << "En operator>> de UniversalString." << std::endl;
119 std::copy(std::istream_iterator<T>(in), std::istream_iterator<T>(),
120 back_inserter(str.string));
126 #endif // UNIVERSALSTRING_H