// ------------------------------------------------------------------------- // str.cpp - classe para representacao de strings. // ------------------------------------------------------------------------- // Criado: 25-Out-2000 Márcio Santi // // Modificado: // ------------------------------------------------------------------------- #include #include // ------------------------------------------------------------------------- // Definicao da classe String: // class String { private: int len; // tamanho da string char *s; // vetor de caracteres public: String(void); String(int); String(const char *); String(const String &); ~String(void); int Length(void) { return len; } bool operator==(const String &t) { return strcmp(s, t.s) == 0; } bool operator< (const String &t) { return strcmp(s, t.s) < 0; } bool operator<=(const String &t) { return strcmp(s, t.s) <= 0; } bool operator> (const String &t) { return strcmp(s, t.s) > 0; } bool operator>=(const String &t) { return strcmp(s, t.s) >= 0; } void operator= (const String &); void operator= (const char *); void operator+=(const String &); void operator+=(const char *); friend String operator+ (const String &, const String &); friend ostream& operator<<(ostream &, const String &); friend istream& operator>>(istream &, String &); }; // ================================= String ================================ String :: String(void) { // Complete aqui. } // ================================= String ================================ String :: String(int l) { len = l; s = new char[l+1]; s[0] = 0; } // ================================= String ================================ String :: String(const char *t) { len = strlen(t); s = new char[len + 1]; strcpy(s, t); } // ================================= String ================================ String :: String(const String &t) { // Complete aqui. } // ================================ ~String ================================ String :: ~String(void) { delete []s; } // =============================== operator= =============================== void String :: operator=(const String &t) { if (this == &t) // Evita a copia da propria string return; else delete []s; // Elimina os caracteres atuais len = t.len; s = new char[len + 1]; strcpy(s, t.s); } // =============================== operator= =============================== void String :: operator=(const char *t) { // Complete aqui. } // =============================== operator+= ============================== void String :: operator+=(const String &t) { // Complete aqui. } // =============================== operator+= ============================== void String :: operator+=(const char *t) { // Complete aqui. } // =============================== operator+ =============================== String operator+(const String &a, const String &b) { String c(a.len + b.len); strcpy(c.s, a.s); strcat(c.s, b.s); return(c); } // ============================== operator<< =============================== ostream& operator<<(ostream &out, const String &t) { return(out << t.s); } // ============================== operator>> =============================== istream& operator>>(istream &in, String &t) { static char aux[1024]; in >> aux; delete []t.s; t.len = strlen(aux); t.s = new char[t.len + 1]; strcpy(t.s, aux); return(in); } // Complete todos os trechos de codigo onde encontrar o comentario // "complete aqui". A seguir teste alguns dos operadores sobrecarregados // atraves da funcao principal apresentada abaixo. Finalmente escreva um // programa em C++ que leia nomes completos de pessoas e no final imprima // a lista desses nomes em ordem alfabetica. Para tal, armazene esses nomes // em um vetor de objetos da classe string. O programa devera verificar se // algum nome foi digitado mais de uma vez. // Utilize os operadores sobrecarregados na classe string. // BOA SORTE! O trabalho e individual! int main(void) { String str1,str2,str3; while (cin >> str1 >> str2) { cout << "str1 = " << str1 << "\n"; cout << "str2 = " << str2 << "\n"; str3 = str1 + " " + str2; cout << "str3 = " << str3 << "\n"; } return(0); } // ------------------------------------------------------------------------- // Funcao principal do trabalho: // // 1. Teste todas as sobrecargas dos operadores // 2. Escreva um programa que leia nomes: "Manuel da Silva", "Joaquim Pereira", // etc, ordene esses nomes e em seguida imprima-os. int main(void) { // String ... // Complete aqui. // return(0); } // ==================================================== Fim do arquivo =====