字符串函数问题
[code ]
头文件:
#ifndef MEM_H
#define MEM_H
typedef unsigned char byte;
class Mem{
byte *mem;
int size;
void ensureMinSize(int minSize);
public:
friend class MyString;
Mem();
Mem(int sz);
~Mem();
int msize();
byte *pointer();
byte *pinter(int minSize);
};
#endif
主程序
#include "Mem.h"
#include <cstring>
#include <iostream>
using namespace std;
class MyString{
Mem *buf;
public:
MyString();
MyString( char *str);
~MyString();
void concat(char *str);
void print(ostream &os);
};
MyString::MyString(){buf=0;}
MyString::MyString( char *str)
{
buf=new Mem(strlen(str)+1);
strcpy((char*)buf->pointer(),str);//?????为什么是char * strcpy不是(地址1,地址2)吗
}
void MyString::concat(char *str)
{
if(!buf) buf=new Mem;
strcat((char *)buf->pointer(buf->size)+strlen(str)+1,str);///?????function does take 1 parameters
}
void MyString::print(ostream&os)
{
if(!buf) return ;
os<<buf->pointer()<<endl;
}
MyString::~MyString(){delete buf;}
int main()
{
MyString s("My test string");
s.print(cout);
s.concat("some additional stuff");
s.print(cout);
MyString s2;
s2.concat("Using default construction");
s2.print(cout);
return 0;
}
多谢!!
[/code]