Hi, i'm having some problems with my inheritance homework. It consists on writing a progrma that mimics the String lib by overloading different operands and then create two derive classes that will revert a string and that will change the cases to lower and upper. This is as far as i got, but now i get error messages indicating that the members in the String.cpp file are not in the String.h file. Could i get some feed back on what i am missing or doing wrong? Thanks in advance
[LIST=1]
[*]//String.h
[*]#ifndef _STRING_H
[*]#define _STRING_H
[*]class String
[*]{
[*] protected:
[*] int length;
[*] char* buf;
[*] char *name;
[*] public:
[*] String();
[*] String(char* ch01);
[*] String(char ch02);
[*] String(int ch03);
[*] String(const String& str01);
[*] String(char ch04, int n);
[*] ~String();
[*] void setName(char *nm);
[*] int getLength();
[*] void print();
[*] String& operator=(const String& str02);
[*] String& operator=(const char* ch04);
[*] friend String operator+(const String& str01, const String& str02);
[*] friend String operator+(const String& str01, const char* ch01);
[*] friend String operator+(const char* ch01, const String& str01);
[*] friend String operator+(const String& str01, char ch01);
[*] friend String operator+(char ch01, const String& str01);
[*] String& operator+=(const String& str01);
[*] //String operator+(const String str01);
[*] String operator+() const;
[*] friend int operator==(const String& str01, const String& str02);
[*] friend int operator!=(const String& str01, const String& str02);
[*] friend int operator< (const String& str01, const String& str02);
[*] friend int operator<=(const String& str01, const String& str02);
[*] friend int operator> (const String& str01, const String& str02);
[*] friend int operator>=(const String& str01, const String& str02);
[*] char& operator[](int n);
[*] friend char* operator+(const String& str01, int n);
[*] friend char* operator+(int n, const String& str01);
[*] String& operator++();
[*] String& operator--();
[*] String operator++(int n);
[*] String operator--(int n);
[*] String substr(int n1, int n2);
[*] friend ostream& operator<<(ostream& os, const String& str01);
[*]};
[*]#endif
[/LIST]
[LIST=1]
[*]// String.cpp
[*]#include <iostream>
[*]#include <fstream>
[*]#include <stdlib.h>
[*]#include "string.h"
[*]using namespace std;
[*]extern ofstream csis;
[*]//Ctr overload
[*]String::String()
[*]{
[*] buf = new char[1];
[*] length = 0;
[*]}
[*]String::String(char* ch01)
[*]{
[*] buf = new char[sizeof(ch01)+1];
[*] strcpy_s(buf,(sizeof(ch01)+1),ch01);
[*] length = sizeof(ch01);
[*]}
[*]String::String(char ch02)
[*]{
[*] //buf = ch02;
[*] buf = new char[1];
[*] buf[0] = ch02;
[*] length = 1;
[*]}
[*]String::String(int ch03)
[*]{
[*] if (ch03 <= 0)
[*] {
[*] ch03 = 0;
[*] String();
[*] }
[*] else
[*] {
[*] buf = new char[ch03+1];
[*] }
[*] buf[0] = NULL;
[*] length = ch03;
[*]}
[*]String::String(char ch04, int n)
[*]{
[*] buf = new char[n];
[*] for (int c = 0; c < n; c++)
[*] buf[c] = ch04;
[*] length = n;
[*]}
[*]//Copy Ctr
[*]String::String(const String &str01)
[*]{
[*] buf = new char[sizeof(str01.buf)+1];
[*] strcpy_s(buf,(sizeof(str01.buf)+1),str01.buf);
[*] length = sizeof(str01.buf);
[*]}
[*]String::~String()
[*]{
[*] delete [] name;
[*] delete [] buf;
[*]}
[*]int String::getLength()
[*]{
[*] return length;
[*]}
[*]void String::setName(char *nm)
[*]{
[*] name = new char[sizeof(nm)+1];
[*] strcpy_s(name, sizeof(nm)+1, nm);
[*] length = sizeof(nm);
[*]}
[*]void String::print()
[*]{
[*] cout << name;
[*] csis << name;
[*]}
[*]String& String::operator =(const String& str02)
[*]{
[*] String temp(str02);
[*] delete [] buf;
[*] buf = new char[sizeof(temp.buf)+1];
[*] strcpy_s(buf,(sizeof(temp.buf)+1),temp.buf);
[*] length = temp.getLength();
[*] setName(buf);
[*] return *this;
[*]}
[*]String& String::operator =(const char* ch04)
[*]{
[*] delete []buf;
[*] buf = new char[strlen(ch04)+1];
[*] strcpy_s(buf,(sizeof(ch04)+1),ch04);
[*] length = sizeof(ch04);
[*] setName(buf);
[*] return *this;
[*]}
[*]String String::operator +(const String& str01, const String& str02)
[*]{
[*] String temp01(str01);
[*] String temp02(str02);
[*]
[*] delete [] buf;
[*] buf = new char [temp01.getLength() + temp02.getLength() +1];
[*] for (int c = 0; c < temp01.getLength(); c++)
[*] buf[c] = temp01.buf[c];
[*] for (int c = 0; c < temp02.getLength(); c++)
[*] buf[temp01.getLength() + c] = temp02.buf[c];
[*] String temp03(buf);
[*] temp03.setName(buf);
[*] return temp03;
[*]}
[*]String String::operator +(const String& str01, const char* ch01)
[*]{
[*] String temp01(str01);
[*] String temp02(ch01);
[*] delete [] buf;
[*] buf = new char [temp01.getLength() + temp02.getLength() +1];
[*] for (int c = 0; c < temp01.getLength(); c++)
[*] buf[c] = temp01.buf[c];
[*] for (int c = 0; c < temp02.getLength(); c++)
[*] buf[temp01.getLength() + c] = temp02.buf[c];
[*] String temp03(buf);
[*] temp03.setName(buf);
[*] return temp03;
[*]}
[*]String String::operator +(const char* ch01, const String& str01)
[*]{
[*] String temp01(str01);
[*] String temp02(ch01);
[*]
[*] delete [] buf;
[*] buf = new char [temp01.getLength() + temp02.getLength() +1];
[*] for (int c = 0; c < temp02.getLength(); c++)
[*] buf[c] = temp02.buf[c];
[*] for (int c = 0; c < temp01.getLength(); c++)
[*] buf[temp02.getLength() + c] = temp01.buf[c];
[*] String temp03(buf);
[*] temp03.setName(buf);
[*] return temp03;
[*]}
[*]String String::operator +(const String& str01, char ch01)
[*]{
[*] String temp01(str01);
[*] String temp02(ch01);
[*]
[*] delete [] buf;
[*] buf = new char [temp01.getLength() + temp02.getLength() 1];
[*] for (int c = 0; c < temp01.getLength(); c++)
[*] buf[c] = temp01.buf[c];
[*] buf[temp01.getLength() + temp02.getLength()] = temp02.buf;
[*] String temp03(buf);
[*] temp03.setName(buf);
[*] return temp03;
[*]}
[*]String String::operator +(char ch01, const String& str01)
[*]{
[*] String temp01(ch01);
[*] String temp02(str01);
[*]
[*] delete [] buf;
[*] buf = new char [temp01.getLength() + temp02.getLength() 1];
[*] for (int c = 0; c < temp01.getLength(); c++)
[*] buf[c] = temp01.buf[c];
[*] for (int c = 0; c < temp02.getLength(); c++)
[*] buf[temp01.getLength() + c] = temp02.buf[c];
[*] String temp03(buf);
[*] temp03.setName(buf);
[*] return temp03;
[*]}
[*]String& String::operator +=(const String& str01)
[*]{
[*] String temp(str01);
[*]
[*] delete [] buf;
[*] buf = new char[length + temp.getLength() + 1];
[*] for (int c = 0; c < length; c++)
[*] buf[c] = name[c];
[*] for (int c = 0; c < temp.getLength(); c++)
[*] buf[length + c] = temp.buf[c];
[*]
[*] String temp01(buf);
[*] String &temp02(temp01);
[*] //temp01.setName(buf);
[*] return temp02;
[*]}
[*]String String::operator +() const
[*]{
[*] return *this;
[*]}
[*]int String::operator ==(const String& str01, const String& str02);
[*]{
[*] String temp01(str01);
[*] String temp02(str02);
[*]
[*] if (temp01.getLength() == temp02.getLength())
[*] {
[*] for (int c = 0; c < temp01.getLength(); c++)
[*] {
[*] if (temp01.buf[c] != temp02.buf[c])
[*] {
[*] return 0;
[*] }
[*] }
[*] return 1;
[*] }
[*] else
[*] {
[*] return 0;
[*] }
[*]}
[*]int String::operator !=(const String& str01, const String& str02)
[*]{
[*] String temp01(str01);
[*] String temp02(str02);
[*]
[*] if (temp01.getLength() == temp02.getLength())
[*] {
[*] for (int c = 0; c < temp01.getLength(); c++)
[*] {
[*] if (temp01.buf[c] != temp02.buf[c])
[*] {
[*] return 1;
[*] }
[*] }
[*] return 0;
[*] }
[*] else
[*] {
[*] return 1;
[*] }
[*]}
[*]int String::operator <(const String& str01, const String& str02)
[*]{
[*] String temp01(str01);
[*] String temp02(str02);
[*]
[*] if (temp01.getLength() < temp02.getLength())
[*] {
[*] return 1;
[*] }
[*] else if (temp01.getLength() == temp02.getLength())
[*] {
[*] for (int c = 0; c < temp01.getLength(); c++)
[*] {
[*] if (temp01.buf[c] >= temp02.buf[c])
[*] {
[*] return 0;
[*] }
[*] }
[*] return 1;
[*] }
[*] else
[*] {
[*] return 0;
[*] }
[*]}
[*]int String::operator <=(const String& str01, const String& str02)
[*]{
[*] String temp01(str01);
[*] String temp02(str02);
[*]
[*] if (temp01.getLength() < temp02.getLength())
[*] {
[*] return 1;
[*] }
[*] else if (temp01.getLength() == temp02.getLength())
[*] {
[*] for (int c = 0; c < temp01.getLength(); c++)
[*] {
[*] if (temp01.buf[c] > temp02.buf[c])
[*] {
[*] return 0;
[*] }
[*] }
[*] return 1;
[*] }
[*] else
[*] {
[*] return 0;
[*] }
[*]}
[*]int String::operator >(const String& str01, const String& str02)
[*]{
[*] String temp01(str01);
[*] String temp02(str02);
[*]
[*] if (temp01.getLength() > temp02.getLength())
[*] {
[*] return 1;
[*] }
[*] else if (temp01.getLength() == temp02.getLength())
[*] {
[*] for (int c = 0; c < temp01.getLength(); c++)
[*] {
[*] if (temp01.buf[c] <= temp02.buf[c])
[*] {
[*] return 0;
[*] }
[*] }
[*] return 1;
[*] }
[*] else
[*] {
[*] return 0;
[*] }
[*]}
[*]int String::operator >=(const String& str01, const String& str02)
[*]{
[*] String temp01(str01);
[*] String temp02(str02);
[*]
[*] if (temp01.getLength() > temp02.getLength())
[*] {
[*] return 1;
[*] }
[*] else if (temp01.getLength() == temp02.getLength())
[*] {
[*] for (int c = 0; c < temp01.getLength(); c++)
[*] {
[*] if (temp01.buf[c] < temp02.buf[c])
[*] {
[*] return 0;
[*] }
[*] }
[*] return 1;
[*] }
[*] else
[*] {
[*] return 0;
[*] }
[*]}
[*]char& String::operator [](int n)
[*]{
[*] return name[n];
[*]}
[*]char* String::operator +(const String& str01, int n)
[*]{
[*] String temp(str01);
[*]
[*] delete [] buf;
[*] buf = new char [temp.getLength() + 1];
[*] strcpy_s(buf, temp.getLength(), temp.buf);
[*] for (int c = 0; c < (temp.getLength() + 1); c++)
[*] {
[*] buf[c] = temp.buf + n;
[*] }
[*] setName(buf);
[*] return buf;
[*]}
[*]char* String::operator+(int n, const String& str01)
[*]{
[*] String temp(str01);
[*] delete [] buf;
[*] buf = new char [temp.getLength() + 1];
[*] strcpy_s(buf, temp.getLength() + 1, temp.buf);
[*] for (int c = 0; c < (temp.getLength() + 1); c++)
[*] {
[*] buf[c] = temp.buf[c] + n;
[*] }
[*] setName(buf);
[*] return buf;
[*]}
[*]String& String::operator ++()
[*]{
[*] delete [] buf;
[*] buf = new char [sizeof(name) + 1];
[*] strcpy_s(buf, sizeof(name), name);
[*] for (int c = 0; c < (sizeof(name) + 1); c++)
[*] {
[*] buf[c] = name[c] + 1;
[*] }
[*] String& temp(*this);
[*] //temp = this;
[*] //&temp.setName(buf);
[*] return temp;
[*] //return& this
[*]}
[*]String& String::operator --()
[*]{
[*] delete [] buf;
[*] buf = new char [sizeof(name) + 1];
[*] strcpy_s(buf, sizeof(name), name);
[*] for (int c = 0; c < (sizeof(name) + 1); c++)
[*] {
[*] buf[c] = name[c] - 1;
[*] }
[*] String temp(buf);
[*] String& temp01(temp);
[*] //temp.setName(buf);
[*] return temp01;
[*]}
[*]String String::operator ++(int n)
[*]{
[*] delete [] buf;
[*] buf = new char [sizeof(name) + 1];
[*] strcpy_s(buf, sizeof(name), name);
[*] for (int c = 0; c < (sizeof(name) + 1); c++)
[*] {
[*] buf[c] = name[c] + n;
[*] }
[*] String temp(buf);
[*] temp.setName(buf);
[*] return temp;
[*]}
[*]String String::operator --(int n)
[*]{
[*] delete [] buf;
[*] buf = new char [sizeof(name) + 1];
[*] strcpy_s(buf, sizeof(name), name);
[*] for (int c = 0; c < (sizeof(name) + 1); c++)
[*] {
[*] buf[c] = name[c] - n;
[*] }
[*] String temp(buf);
[*] temp.setName(buf);
[*] return temp;
[*]}
[*]String String::substr(int n1, int n2)
[*]{
[*] delete [] buf;
[*] buf = new char [n2 - n1 +1];
[*] for (int c = 0; c < (n2 - n1 +1); c++)
[*] buf[c] = name[n1 + c];
[*]
[*] String temp(buf);
[*] temp.setName(buf);
[*] return temp;
[*]}
[*]ostream& String::operator<<(ostream& os, const String& str01)
[*]{
[*] String temp(str01);
[*] os << temp.name;
[*] return os;
[*]}
[/LIST]
[LIST=1]
[*]#ifndef _REVERSE_H
[*]#define _REVERSE_H
[*]class ReverseString : public String
[*]{
[*] private:
[*] char* reverse;
[*] public:
[*] ReverseString();
[*] ReverseString(char* ch01);
[*] ReverseString(const ReverseString& str01);
[*] ~ReverseString();
[*] ReverseString operator~();
[*]};
[*]#endif
[/LIST]
[LIST=1]
[*]#include <iostream>
[*]#include <fstream>
[*]#include <stdlib.h>
[*]#include "string.h"
[*]#include "reverse.h"
[*]using namespace std;
[*]ReverseString::ReverseString()
[*]{
[*] String::String();
[*] reverse = new char[length + 1];
[*]}
[*]ReverseString::ReverseString(char* ch01)
[*]{
[*] String::String(ch01);
[*] reverse = new char[length + 1];
[*]}
[*]ReverseString::ReverseString(const ReverseString& str01)
[*]{
[*] String::String(str01);
[*] reverse = new char[length + 1];
[*]}
[*]ReverseString::~ReverseString()
[*]{
[*] delete [] reverse;
[*]}
[*]ReverseString ReverseString::operator ~()
[*]{
[*] for (int c = 0; c <= length; c++)
[*] reverse[c] = name[length - c];
[*]
[*] ReverseString temp(reverse);
[*] return temp;
[*]}
[/LIST]
[LIST=1]
[*]#ifndef _CASE_H
[*]#define _CASE_H
[*]class CaseString : public String
[*]{
[*] private:
[*] char *upper;
[*] char *lower;
[*] public:
[*] CaseString();
[*] CaseString(const CaseString &str01);
[*] CaseString(char* ch);
[*] ~CaseString();
[*] CaseString operator=(const CaseString &str01);
[*] char *setUpper();
[*] char *setLower();
[*] void print();
[*]};
[*]#endif
[/LIST]
[LIST=1]
[*]#include <iostream>
[*]#include <fstream>
[*]#include <stdlib.h>
[*]#include "string.h"
[*]#include "case.h"
[*]using namespace std;
[*]extern ofstream csis;
[*]CaseString::CaseString()
[*]{
[*] String::String();
[*] upper = new char[length + 1];
[*] lower = new char[length + 1];
[*] upper = setUpper();
[*] lower = setLower();
[*]}
[*]CaseString::CaseString(const CaseString &str01)
[*]{
[*] String::String(str01);
[*] upper = new char[length + 1];
[*] lower = new char[length + 1];
[*] upper = setUpper();
[*] lower = setLower();
[*]}
[*]CaseString::CaseString(char *ch)
[*]{
[*] String::String(ch);
[*] upper = new char[length + 1];
[*] lower = new char[length + 1];
[*] upper = setUpper();
[*] lower = setLower();
[*]}
[*]CaseString::~CaseString()
[*]{
[*] delete [] upper;
[*] delete [] lower;
[*]}
[*]char *CaseString::setLower()
[*]{
[*] for (int c = 0; c <= length; c++)
[*] {
[*] if ((buf[c] >= 65) && (buf[c] <= 90))
[*] {
[*] lower[c] = buf[c] + 32;
[*] }
[*] else
[*] {
[*] lower[c] = buf[c];
[*] }
[*] }
[*] return lower;
[*]}
[*]char *CaseString::setUpper()
[*]{
[*] for (int c = 0; c <= length; c++)
[*] {
[*] if ((buf[c] >= 97) && (buf[c] <= 122))
[*] {
[*] upper[c] = buf[c] - 32;
[*] }
[*] else
[*] {
[*] upper[c] = buf[c];
[*] }
[*] }
[*] return upper;
[*]}
[*]void CaseString::print()
[*]{
[*] cout << upper << ", " << lower << endl;
[*] csis << upper << ", " << lower << endl;
[*]}
[/LIST]
the strdrv.h and strdv.cpp have been provided by the teacher to test the program
[LIST=1]
[*]// strdrv.h
[*]#ifndef _STRDRV_H
[*]#define _STRDRV_H
[*]#include "string.h"
[*]#include "reverse.h"
[*]#include "case.h"
[*]int main();
[*]void test1();
[*]void test2();
[*]void test3();
[*]void test4();
[*]void test5();
[*]void test6();
[*]void test7();
[*]void test8();
[*]void test9();
[*]void test10();
[*]void test11();
[*]void test12();
[*]void test13();
[*]void test14();
[*]void test15();
[*]void test16();
[*]void test17();
[*]void test18();
[*]void test19();
[*]void test20();
[*]void wait();
[*]#endif
[/LIST]
[LIST=1]
[*]// strdrv.cpp
[*]#include <iostream>
[*]#include <fstream>
[*]#include <stdlib.h>
[*]#include "strdrv.h"
[*]using namespace std;
[*]ofstream csis;
[*]int main()
[*]{
[*] csis.open("csis.dat");
[*] test1();
[*] test2();
[*] test3();
[*] test4();
[*] test5();
[*] test6();
[*] test7();
[*] test8();
[*] test9();
[*] test10();
[*] test11();
[*] test12();
[*] test13();
[*] test14();
[*] test15();
[*] test16();
[*] test17();
[*] test18();
[*] test19();
[*] test20();
[*] csis.close();
[*]}
[*]void test1()
[*]{
[*] system("cls");
[*] cout << "1. Testing: String default ctor." << endl << endl;
[*] csis << "1. Testing: String default ctor." << endl << endl;
[*] String s1;
[*] s1.setName("s1");
[*] s1.print();
[*] wait();
[*]}
[*]void test2()
[*]{
[*] system("cls");
[*] cout << "2. Testing: String one arg (char *) ctor." << endl << endl;
[*] csis << "2. Testing: String one arg (char *) ctor." << endl << endl;
[*] String s2("ABC");
[*] s2.setName("s2");
[*] s2.print();
[*] wait();
[*]}
[*]void test3()
[*]{
[*] system("cls");
[*] cout << "3. Testing: String one arg (char) ctor." << endl << endl;
[*] csis << "3. Testing: String one arg (char) ctor." << endl << endl;
[*] String s3('Z');
[*] s3.setName("s3");
[*] s3.print();
[*] wait();
[*]}
[*]void test4()
[*]{
[*] system("cls");
[*] cout << "4. Testing: String one arg (int) ctor." << endl << endl;
[*] csis << "4. Testing: String one arg (int) ctor." << endl << endl;
[*] String s4(10);
[*] s4.setName("s4");
[*] s4.print();
[*] wait();
[*]}
[*]void test5()
[*]{
[*] system("cls");
[*] cout << "5. Testing: String copy ctor." << endl << endl;
[*] csis << "5. Testing: String copy ctor." << endl << endl;
[*] String s5("Haley Laurel");
[*] s5.setName("s5");
[*] s5.print();
[*] String t5(s5);
[*] t5.setName("t5");
[*] t5.print();
[*] wait();
[*]}
[*]void test6()
[*]{
[*] system("cls");
[*] cout << "6. Testing: String two arg (char, int) ctor." << endl << endl;
[*] csis << "6. Testing: String two arg (char, int) ctor." << endl << endl;
[*] String s6('*', 10);
[*] s6.setName("s6");
[*] s6.print();
[*] wait();
[*]}
[*]void test7()
[*]{
[*] system("cls");
[*] cout << "7. Testing: String assignment." << endl << endl;
[*] csis << "7. Testing: String assignment." << endl << endl;
[*] String s7("Samantha Morgan"), t7, u7;
[*] s7.setName("s7");
[*] t7.setName("t7");
[*] u7.setName("u7");
[*] t7 = u7 = s7;
[*] s7.print();
[*] t7.print();
[*] u7.print();
[*] wait();
[*]}
[*]void test8()
[*]{
[*] system("cls");
[*] cout << "8. Testing: String assignment." << endl << endl;
[*] csis << "8. Testing: String assignment." << endl << endl;
[*] String s8("ABC");
[*] s8.setName("s8");
[*] s8 = s8;
[*] s8.print();
[*] wait();
[*]}
[*]void test9()
[*]{
[*] system("cls");
[*] cout << "9. Testing: Implicit type conversion." << endl << endl;
[*] csis << "9. Testing: Implicit type conversion." << endl << endl;
[*] String s9;
[*] s9 = "ABC";
[*] s9.setName("s9");
[*] s9.print();
[*] wait();
[*]}
[*]void test10()
[*]{
[*] system("cls");
[*] cout << "10. Testing: String concatenation." << endl << endl;
[*] csis << "10. Testing: String concatenation." << endl << endl;
[*] String s10("DEF");
[*] String t10('H');
[*] String u10("ABC" + s10 + "G" + t10 + 'I');
[*] u10.setName("u10");
[*] u10.print();
[*] String v10('X' + u10);
[*] v10.setName("v10");
[*] v10.print();
[*] wait();
[*]}
[*]void test11()
[*]{
[*] system("cls");
[*] cout << "11. Testing: String concatenation." << endl << endl;
[*] csis << "11. Testing: String concatenation." << endl << endl;
[*] String s11('A');
[*] String t11("BC");
[*] s11.setName("s11");
[*] t11.setName("t11");
[*] s11 += s11 += t11 += 'D';
[*] s11.print();
[*] t11.print();
[*] wait();
[*]}
[*]void test12()
[*]{
[*] system("cls");
[*] cout << "12. Testing: String unary operator." << endl << endl;
[*] csis << "12. Testing: String unary operator." << endl << endl;
[*] String s12("Unary +");
[*] String t12(+s12);
[*] s12.setName("s12");
[*] t12.setName("t12");
[*] s12.print();
[*] t12.print();
[*] s12 = +s12;
[*] s12.print();
[*] wait();
[*]}
[*]void test13()
[*]{
[*] system("cls");
[*] cout << "13. Testing: String comparison operators." << endl << endl;
[*] csis << "13. Testing: String comparison operators." << endl << endl;
[*] String s13("ABC"), t13("ABCD");
[*] s13.setName("s13");
[*] t13.setName("t13");
[*] s13.print();
[*] t13.print();
[*] cout << endl;
[*] cout << "== " << (s13 == t13 ? "True" : "False") << endl;
[*] cout << "!= " << (s13 != t13 ? "True" : "False") << endl;
[*] cout << "< " << (s13 < t13 ? "True" : "False") << endl;
[*] cout << "<= " << (s13 <= t13 ? "True" : "False") << endl;
[*] cout << "> " << (s13 > t13 ? "True" : "False") << endl;
[*] cout << ">= " << (s13 >= t13 ? "True" : "False") << endl;
[*] csis << endl;
[*] csis << "== " << (s13 == t13 ? "True" : "False") << endl;
[*] csis << "!= " << (s13 != t13 ? "True" : "False") << endl;
[*] csis << "< " << (s13 < t13 ? "True" : "False") << endl;
[*] csis << "<= " << (s13 <= t13 ? "True" : "False") << endl;
[*] csis << "> " << (s13 > t13 ? "True" : "False") << endl;
[*] csis << ">= " << (s13 >= t13 ? "True" : "False") << endl;
[*] wait();
[*]}
[*]void test14()
[*]{
[*] system("cls");
[*] cout << "14. Testing: Overloaded subscript operator." << endl << endl;
[*] csis << "14. Testing: Overloaded subscript operator." << endl << endl;
[*] String s14("C++ is fun.");
[*] s14.setName("s14");
[*] for (int i = -1; i <= s14.getLength(); i++)
[*] {
[*] char& ch = s14[i];
[*] if (ch != '\0')
[*] ++ch;
[*] }
[*] s14.print();
[*] wait();
[*]}
[*]void test15()
[*]{
[*] system("cls");
[*] cout << "15. Testing: Pointer notation." << endl << endl;
[*] csis << "15. Testing: Pointer notation." << endl << endl;
[*] String s15("ABCDE");
[*] s15.setName("s15");
[*] for(int i = 0; i < s15.getLength(); i++)
[*] ++(*(s15+i));
[*] for (int j = 0; j < s15.getLength(); j++)
[*] {
[*] cout << *(j + s15);
[*] csis << *(j + s15);
[*] }
[*] cout << endl;
[*] csis << endl;
[*] wait();
[*]}
[*]void test16()
[*]{
[*] system("cls");
[*] cout << "16. Testing: Increment and decrement operators." << endl << endl;
[*] csis << "16. Testing: Increment and decrement operators." << endl << endl;
[*] String s16("ABC");
[*] String t16(++s16);
[*] s16.setName("s16");
[*] t16.setName("t16");
[*] s16.print();
[*] t16.print();
[*] String u16("ABC");
[*] String v16(u16++);
[*] u16.setName("u16");
[*] v16.setName("v16");
[*] u16.print();
[*] v16.print();
[*] String w16("ABC");
[*] String x16(--w16);
[*] w16.setName("w16");
[*] x16.setName("x16");
[*] w16.print();
[*] x16.print();
[*] String y16("ABC");
[*] String z16(y16--);
[*] y16.setName("y16");
[*] z16.setName("z16");
[*] y16.print();
[*] z16.print();
[*] wait();
[*]}
[*]void test17()
[*]{
[*] system("cls");
[*] cout << "17. Testing: Substr function." << endl << endl;
[*] csis << "17. Testing: Substr function." << endl << endl;
[*] String s17("Jai Guru Dev"), t17;
[*] s17.setName("s17");
[*] t17.setName("t17");
[*] t17 = s17.substr(4, 8);
[*] s17.print();
[*] t17.print();
[*] wait();
[*]}
[*]void test18()
[*]{
[*] system("cls");
[*] cout << "18. Testing: Output function." << endl << endl;
[*] csis << "18. Testing: Output function." << endl << endl;
[*] String s18("Haley");
[*] String t18("Laurel");
[*] String u18("Stegman");
[*] cout << s18 << t18 << u18;
[*] cout << endl;
[*] csis << endl;
[*] wait();
[*]}
[*]void test19()
[*]{
[*] system("cls");
[*] cout << "19. Testing: ReverseString class." << endl << endl;
[*] csis << "19. Testing: ReverseString class." << endl << endl;
[*] ReverseString s19("Purusha");
[*] ReverseString t19;
[*] s19.setName("s19");
[*] t19.setName("t19");
[*] t19 = ~s19;
[*] s19.print();
[*] t19.print();
[*] ReverseString u19(~~s19);
[*] u19.setName("u19");
[*] u19.print();
[*] wait();
[*]}
[*]void test20()
[*]{
[*] system("cls");
[*] cout << "20. Testing: CaseString class." << endl << endl;
[*] csis << "20. Testing: CaseString class." << endl << endl;
[*] CaseString s20("BaLLooN");
[*] CaseString t20;
[*] s20.setName("s20");
[*] t20.setName("t20");
[*] t20 = s20;
[*] s20.print();
[*] t20.print();
[*] CaseString u20(s20);
[*] u20.setName("u20");
[*] u20.print();
[*] wait();
[*]}
[*]void wait()
[*]{
[*] char buf;
[*] cout << endl << "Press any key to continue." << endl;
[*] csis << endl << endl;
[*] cin.get(buf);
[*]}
[/LIST]