📄 advstrng.cpp
字号:
#include <iostream.h>
#include "AdvStrng.h"
#include <string.h>
const int MAXSIZE = 256;
// Default Constructor for Adv_String
Adv_String::Adv_String ()
{ cells = NULL;
}
// Initializing constructor for Adv_String
Adv_String::Adv_String (char literal[ ])
{ int n;
n = strlen (literal); // length of literal to be stored
cells = new char[n+1]; // allocate a new array
strcpy (cells, literal); // and copy literal string into it
}
// Destructor for Adv_String class
Adv_String:: ~Adv_String ()
{ delete [ ] cells;
}
// Input() Stream input function
void Adv_String::Input (istream& in)
{ int n;
char temp[MAXSIZE];
in >> temp; // input a string
n = strlen(temp); // and calculate length
delete [ ] cells; // delete any previous array
cells = new char[n+1]; // and allocate a new one
strcpy (cells, temp);
}
void Adv_String::Output (ostream& out)
{ out << cells;
}
// Concatenation of two Adv_String variables
// IN: s is another valid Adv_String variable
Adv_String Adv_String::operator+ (Adv_String s)
{ Adv_String temp;
int hostsize = Length(); // calc. needed array size
int argsize = s.Length();
temp.cells = new char[hostsize+argsize+1];
strcpy (temp.cells, cells); // copy host string, then
strcat (temp.cells, s.cells); // concatenate arg. string
return (temp);
}
// Explicit assignment of Adv_String to Adv_String objects
void Adv_String::operator= (Adv_String s)
{ int n;
n = s.Length(); // calc. the length of new string
delete [ ] cells; // delete original array
cells = new char[n+1]; // and allocate a new array
strcpy (cells, s.cells);
}
int Adv_String::Length ()
{ return (strlen (cells));
}
// Deep copy constructor for Adv_String
Adv_String::Adv_String (const Adv_String& s)
{ int n;
n = s.Length(); // calc. the length of new string
delete [ ] cells; // delete original array
cells = new char[n+1]; // and allocate a new array
strcpy (cells, s.cells);
}
// equality test
int Adv_String::operator== (Adv_String s)
{ if (!strcmp(cells, s.cells))
return (1);
else return (0);
}
istream& operator>> (istream& in, Adv_String s)
{ s.Input(in);
return (in);
}
ostream& operator<< (ostream& out, Adv_String& s)
{ s.Output(out);
return (out);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -