⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 advstrng.cpp

📁 C/C++程序设计导论(第二版)》程序源文件
💻 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 + -