#include #include #include #include #pragma once class String { friend String operator+(const String& a, const String& b); long length; char* body; public: String() { length = 0; body = new char[1]; body[0] = '\0'; } String(const char* s) { length = strlen(s); body = new char[length + 1]; for (long i = 0; i < length; ++i) body[i] = s[i]; body[length]='\0'; } String(const char* s, char ps) { length = strlen(s); body = new char[length + 1]; for (long i = 0; i < length; ++i){ body[i] = (s[i]==ps)? '\n': s[i]; } body[length]='\0'; } ~String() { if (body != NULL) { delete[] body; } } void println() const{ printf("[%s]\n", body); } void addChar(char c) { char* buf = new char[length + 2]; for (long i = 0; i < length; ++i) { buf[i] = body[i]; } buf[length] = c; length++; //-- buf[length] = '\0'; delete[] body; body = buf; buf = NULL; } char * getCharArray() const{ return body; } String (int s){ length = 0; body = new char[1]; body[0] = '\0'; if (s>=0){ int s_ = s; int size = 1; while (s_>=10){ s_ = s_/10; size++; } length = size; body = new char [size+1]; sprintf(body, "%d", s); } } String (long s){ length = 0; body = new char[1]; body[0] = '\0'; if (s>=0){ long s_ = s; long size = 1; while (s_>=10){ s_ = s_/10; size++; } length = size; body = new char [size+1]; sprintf(body, "%ld", s); } } const String& operator=(const String& s){ if (body != NULL) delete[] body; length = s.length; body = new char[length+1]; for (long i=0; ilength) return false; long k=0; long start=-1; for (long i=0; igetCharArray()); for (long i=0; i #include int main(void) { FILE * f; int c; if ( ! ( f = fopen("file.txt", "r") ) ) return -1; while ( ( c = fgetc(f) ) != EOF ) putchar( isupper(c) ? tolower(c) : toupper(c) ); return ( fclose(f) ); } */ }; String operator+(const String& a, const String& b){ String res = String(); res.length =a.length+b.length; res.body = new char[res.length+1]; for (long i=0; i