Question: Please help me with this entire C++ lab example. I know it looks long but i promise most of it are just explanations. I will
Please help me with this entire C++ lab example. I know it looks long but i promise most of it are just explanations. I will provide the given codes below the pictured instructions. thank you so much










// StringDriver.h
#ifndef _STRINGDRIVER_H
#define _STRINGDRIVER_H
#include "String.h"
#include "ReverseString.h"
#include "CaseString.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
-------------------------------------------------------------------------------------------------------------------------
// StringDriver.cpp
#include
#include
#include
#include "StringDriver.h"
using namespace std;
ofstream csis;
int main() {
csis.open("csis.txt");
test1();
test2();
test3();
test4();
test5();
test6();
test7();
test8();
test9();
test10();
test11();
test12();
test13();
test14();
test15();
test16();
test17();
test18();
test19();
test20();
csis.close();
}
void test1() {
cout
csis
String s1;
s1.print();
wait();
}
void test2() {
cout
csis
String s2("ABC");
s2.print();
wait();
}
void test3() {
cout
csis
String s3('Z');
s3.print();
wait();
}
void test4() {
cout
csis
String s4(10);
s4.print();
wait();
}
void test5() {
cout
csis
String s5("Purple Rain");
s5.print();
String t5(s5);
t5.print();
wait();
}
void test6() {
cout
csis
String s6('*', 10);
s6.print();
wait();
}
void test7() {
cout
csis
String s7("Sally Ride"), t7, u7;
t7 = u7 = s7;
s7.print();
t7.print();
u7.print();
wait();
}
void test8() {
cout
csis
String s8("ABC");
s8 = s8;
s8.print();
wait();
}
void test9() {
cout
csis
String s9;
s9 = "ABC";
s9.print();
wait();
}
void test10() {
cout
csis
String s10("DEF");
String t10('H');
String u10("ABC" + s10 + "G" + t10 + 'I');
u10.print();
String v10('X' + u10);
v10.print();
wait();
}
void test11() {
cout
csis
String s11('A');
String t11("BC");
s11 += s11 += t11 += 'D';
s11.print();
t11.print();
wait();
}
void test12() {
cout
csis
String s12("Unary +");
String t12(+s12);
s12.print();
t12.print();
s12 = +s12;
s12.print();
wait();
}
void test13() {
cout
csis
String s13("ABC"), t13("ABCD");
s13.print();
t13.print();
cout
cout
cout
cout
cout
cout " t13 ? "True" : "False")
cout = " = t13 ? "True" : "False")
csis
csis
csis
csis
csis
csis " t13 ? "True" : "False")
csis = " = t13 ? "True" : "False")
wait();
}
void test14() {
cout
csis
String s14("C++ is fun.");
for (int i = -1; i
char& ch = s14[i];
if (ch != '\0')
++ch;
}
s14.print();
wait();
}
void test15() {
cout
csis
String s15("ABCDE");
for(int i = 0; i
++(*(s15+i));
for (int j = 0; j
cout
csis
}
cout
csis
wait();
}
void test16() {
cout
csis
String s16("ABC");
String t16(++s16);
s16.print();
t16.print();
String u16("ABC");
String v16(u16++);
u16.print();
v16.print();
String w16("ABC");
String x16(--w16);
w16.print();
x16.print();
String y16("ABC");
String z16(y16--);
y16.print();
z16.print();
wait();
}
void test17() {
cout
csis
String s17("All You Need Is Love"), t17;
t17 = s17.substr(4, 8);
s17.print();
t17.print();
wait();
}
void test18() {
cout
csis
String s18("Red-");
String t18("Green-");
String u18("Blue");
cout
csis
cout
csis
wait();
}
void test19() {
cout
csis
ReverseString s19("Computer");
ReverseString t19;
t19 = ~s19;
s19.print();
t19.print();
ReverseString u19(~~s19);
u19.print();
wait();
}
void test20() {
cout
csis
CaseString s20("BaLLooN");
CaseString t20;
t20 = s20;
s20.print();
t20.print();
CaseString u20(s20);
u20.print();
wait();
}
void wait() {
char buf;
cout
csis
cin.get(buf);
}
e inheritance Lab (String Class) One of the most popular classes to define in C++ is the one that emulate string literal in C. The reason is that a string is not a built-in type in C used all the time. Thus, to perform the various manipulations o must call upon functions in the library string.h that perform copy, duplicate, compare, etc. In Ctt, this need is obviated by tsuch as function and operator overloading. In order to represent the state of a object, you will use two data members in and yet it is rations such as use of the length, length, of the string as an int a pointer, buf, to the string literal of type char* A pointer to a character (char*) is used instead of a fixed-length character array so that memory can be allocated at run-time (via the operator new) and, therefore, have no restrictions placed upon the length of the string (too big or too small). The length field is not strictly mandatory since it can always be obtained from the string pointer via the strlen () idea to have it to avoid repeated calls to strlen ( ) . function. However, its probably a good Overloaded Constructor Functions The creation of each String instance involves allocation of space on the heap, copying the string literal, and setting the length data member accordingly Because there are many different ways in which a String object can be initialized, the constructor functions for the String class must be overloaded to accommodate all of the various situations. First, if a String object is created with no explicit initialization, then the default constructor (the one that can be called with no actual arguments) will be called. t makes sense that we should have the invoking instance point to an empty string literal whose length is zero. String)7 Focus on Object-Oriented Programming with C++ Page 446
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
