Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Character {
- private:
- char cha;
- public:
- Character(char c = 0) { cha = c; }
- friend ostream &operator<<(ostream &out, const Character &c) {
- out << c.cha;
- return out;
- }
- bool operator==(const Character &c) {
- return cha == c.cha;
- }
- Character toUpper() {
- cha = toupper(cha);
- return cha;
- }
- Character toLower() {
- cha = tolower(cha);
- return cha;
- }
- };
- class CharSequence {
- private:
- Character *seq;
- int len;
- public:
- CharSequence(const char *s = "") {
- len = strlen(s);
- seq = new Character[len + 1];
- for (int i = 0; i < len; ++i) {
- seq[i] = s[i];
- }
- seq[len] = Character('\0');
- }
- ~CharSequence() { delete[] seq; }
- // Copy-Constructor
- CharSequence(const CharSequence &cs) {
- len = cs.len;
- seq = new Character[len + 1];
- for (int i = 0; i < len; ++i) {
- seq[i] = cs.seq[i];
- }
- seq[len] = Character('\0');
- }
- // Assignement Operator
- CharSequence &operator=(const CharSequence &cs) {
- if (this == &cs) return *this;
- delete[] seq;
- len = cs.len;
- seq = new Character[len + 1];
- for (int i = 0; i < len; ++i) {
- seq[i] = cs.seq[i];
- }
- seq[len] = Character('\0');
- return *this;
- }
- CharSequence &operator+=(const Character &c) {
- Character *old = seq;
- seq = new Character[len + 1 + 1];
- for (int i = 0; i < len; ++i) {
- seq[i] = old[i];
- }
- seq[len++] = c;
- seq[len] = Character('\0');
- return *this;
- };
- bool operator==(const CharSequence &cs) {
- bool flag = true;
- if (len != cs.len) return false;
- for (int i = 0; i < len; ++i) {
- if (!(seq[i] == cs.seq[i])) {
- flag = false;
- }
- }
- return flag;
- }
- Character &operator[](int i) {
- return seq[i];
- }
- friend ostream &operator<<(ostream &out, const CharSequence &str) {
- for (int i = 0; i < str.len; ++i) {
- out << str.seq[i];
- }
- return out;
- }
- int operator[](char c) {
- int count = 0;
- for (int i = 0; i < len; ++i) {
- if (seq[i] == c) {
- count++;
- }
- }
- return count;
- }
- CharSequence toUpperCase() {
- CharSequence cs(*this);
- for (int i = 0; i < len; ++i) {
- cs.seq[i] = seq[i].toUpper();
- }
- return cs;
- }
- CharSequence toLowerCase() {
- CharSequence cs(*this);
- for (int i = 0; i < len; ++i) {
- cs.seq[i] = seq[i].toLower();
- }
- return cs;
- }
- };
- int main() {
- CharSequence cs;
- cs += Character('a');
- cout << cs;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement