home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
listings
/
v_09_11
/
9n11104a
< prev
next >
Wrap
Text File
|
1991-09-26
|
1KB
|
62 lines
#include <ctype.h>
#include <stdio.h>
#include <string.h>
//
// a String class with overloaded constructors
//
class String
{
public:
String(const char *s)
{
len = strlen(s);
str = strcpy(new char[len + 1], s);
}
String(const String &s)
{
len = s.len;
str = strcpy(new char[len + 1], s.str);
}
~String() { delete str; }
size_t length() { return len; }
const char *text() { return str; }
void cat(char c);
char &sub(size_t i)
{
if (i > len)
/* error */;
return str[i];
}
private:
size_t len;
char *str;
};
void String::cat(char c)
{
char *p = strcpy(new char[len + 1], str);
p[len++] = c;
p[len] = '\0';
delete str;
str = p;
}
int main()
{
size_t i;
String s1("hello"); // s1 = "hello"
String s2(s1); // s2 = "hello"
s2.cat('!'); // s2 = "hello!"
printf("s1 = %s\n", s1.text());
printf("s2 = %s\n", s2.text());
for (i = 0; i < s1.length(); ++i)
s1.sub(i) = toupper(s1.sub(i));
// s1 = "HELLO"
printf("s1 = %s\n", s1.text());
printf("s2 = %s\n", s2.text());
return 0;
}