Question: c++ visual studio 2019 Do not use #include Help me fix my program. Was told that : Syntax missing original question: Modify the String class
c++ visual studio 2019
Do not use #include
Help me fix my program. Was told that : Syntax missing

original question:
- Modify the String class in the following ways:
- Our String class always deletes the old character buffer and allocates a new character buffer on assignment or in the copy constructor. This need not be done if the new value is shorter than the current value and hence would fit the existing buffer. Rewrite the String class to only allocate a new buffer when necessary
- Overload the compound += operator to perform concatenation of two String objects.
- Overload the + operator using the += operator.
- Add a member function compare (String) that returns -1 or 0 or 1 depending on whether the string is lexicographically less than, equal to, or greater than the argument.
Provide a test program to test your class.
string.h---------------------------------------------------------------
#ifndef STRING_H #define STRING_H
class String { public: String(); // Default constructor String(const char p[]); // Simple constructor String(const String& right); // Copy constructor ~String(); // Destructor String& operator=(const String& right); // Assignment operator String& operator+=(const String& right); int length() const; char& operator[](int index); char operator[](int index) const; int compare(const String& data);//compare function implemented String operator+=(String& right);//+= operator overloaded String operator+(String& right);//+ operator overloaded
private: char* buffer; int len; };
#endif
string.cpp------------------------------------------------------
#include "string.h" #include
using namespace std;
String::String() { len = 0; buffer = NULL; // No need to allocate array to hold zero characters }
String::String(const char p[]) { // Determine number of characters in string (strlen(p)) len = 0; while (p[len] != '\0') len++; // Allocate buffer array, remember to make space for NULL character buffer = new char[len + 1]; // Copy new characters (strcpy( buffer, p )) for (int i = 0; i
String::String(const String& right) { len = right.length(); buffer = new char[len + 1]; for (int i = 0; i
String::~String() { delete[] buffer; }
int String::length() const { return len; }
char& String::operator [] (int index) { assert((index >= 0) && (index
char String::operator [] (int index) const { assert((index >= 0) && (index
// + opearator is overloaded for concatenation using the += operator
String String::operator+(String& right) { return *this += right; }
//+= operator is overloaded for concatenation
String String::operator +=(String& s2) { int l1 = len; int l2 = s2.length(); char* temp = new char[len + 1]; for (int i = 0; i
buffer[len] = '\0';
return *this; }
// = operator is optimized for assignment and allocates new space only when the other string length is more than the current buffer
String& String::operator=(const String& right) { if (this != &right) { if (right.length() > len) { delete[] buffer; // Get rid of old buffer len = right.length(); buffer = new char[len + 1]; } len = right.length(); for (int i = 0; i
int String::compare(const String& data) { for (int i = 0; i len && i buffer[i]) > ((int)data[i])) { return 1; } else if (((int)this->buffer[i]) len > data.length()) { return 1; } if (this->len
ostream& operator
stringtest.cpp--------------------------------------------------------------------
#include
using namespace std;
int main() //stringtest { String new_name; cout Error List Entire Solution 2 Errors ! 2 Warnings O Messages X Build + IntelliSense Search Error List .................... Description ! 06386 Buffer overrun while writing to 'buffer': the writable size is '(len+1)*1' bytes, but '3' bytes might be written. D! C6386 Buffer overrun while writing to 'buffer': the writable size is '(len+1)*1' bytes, but 'len' bytes might be written. XLNK1120 1 unresolved externals XLNK2019 unresolved external symbol _main referenced in function "int _cdecl invoke_main(void)" (? invoke_main@@YAHXZ) Project File Line Suppres INC.Assignment.... INC.Assignment.... 86 INC.Assignment.... INC.Assignment.... 109 INC.Assignment.... INC.Assignment.... 1 INC.Assignment.... MSVCRTD.lib(ex... 1
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
