C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[5741] [질문] 고수님 전상서..
이녀기 [] 2512 읽음    2001-02-27 00:22
바루 이코듭니당^^
허접한 제가 보니.. 어째 좀 이상한 곳이 몇군데 있군요.. 책그대룬데( teach yourself c++
in 21 days. 제시 리버티..)
제가 고칠대루 고쳐 봐두 안되길래^^ 원문 그대루 올려 봤습니다..
고수님 도와주세요.. 주석정도만 달아주셔도 .. 정말 감사할것 같은데..^^
어쩜 좋아요.. 이게 걸려서 담 장으루 못넘어 가구 있습니다..
고수님 도와주세요.
특히 조 아래 상수 string & 를 인수로 가지는 생성자가..ㅠㅠ
#include<iostream.h>
#include<string.h>


class string
{
    public:
        string();
        string(const char * const);
        string(const string &);
        ~string();

        char & operator [](unsigned short offset);
        char operator [] (unsigned short offset) const;
        string operator + (const string&);
        void operator +=(const string&);
        string & operator = (const string &);

        unsigned short getlen() const {return itslen;}
        const char * getstring() const {return itsstring;}

    private:
        string (unsigned short);
        char * itsstring;
        unsigned short itslen;
};

string::string()
{
    itsstring = new char[1];
    itsstring[0] = '\0';
    itslen=0;
}

string::string(unsigned short len)
{
    itsstring = new char[len+1];
    for (int i=0; i<=len ;i++)
        itsstring[i] = '\0';
    itslen=len;
}

string::string(const char * const cstring)
{
    itslen = strlen(cstring);
    itsstring=new char[itslen+1];
    for(unsigned short i=0;i<=itslen;i++)
        itsstring[i]=cstring[i];
    itsstring[itslen]='\0';
}

string::string (const string & rhs)
{
    itslen = rhs.getlen();
    itsstring=new char[itslen+1];
    for (unsigned short i=0; i<=itslen;i++)
        itsstring[i]=rhs[i];
    itsstring[itslen] = '\0';
}

string::~string()
{
    delete [] itsstring;
    itslen=0;
}

string & string::operator = (const string & rhs)
{
    if (this==&rhs)
        return *this;
    delete []itsstring;
    itslen=rhs.getlen();
    itsstring = new char [itslen+1];
    for (unsigned short i=0;i<=itslen;i++)
        itsstring[i]=rhs[i];
    itsstring[itslen]='\0';
    return *this;
}

char & string::operator[] (unsigned short offset)
{
    if (offset>itslen)
        return itsstring[itslen-1];
    else
        return itsstring[offset];
}

char string::operator [](unsigned short offset) const
{
    if (offset>itslen)
        return itsstring[itslen-1];
    else
        return itsstring[offset];
}

string string::operator +( const string & rhs)
{
    unsigned short totallen = itslen+rhs.getlen();
    string temp(totallen);
    for(unsigned short i=0; i<=itslen;i++)
        temp[i] = itsstring[i];
    for(unsigned short j=0;j<rhs.getlen();j++,i++)
        temp[i]=rhs[j];
    temp [totallen]='\0';
    return temp;
}

void string::operator +=(const string &rhs)
{
    unsigned short rhslen = rhs.getlen();
    unsigned short totallen= itslen+ rhs.getlen();
    string temp(totallen);
    for (unsigned short i=0;i<itslen;i++)
        temp[i]=itsstring[i];
    for (unsigned short j=0;j<rhs.getlen();j++,i++)
        temp[i]=rhs[i-itslen];
    temp[totallen]='\0';
    *this=temp;
}

int main()
{
    string s1("initial test");
    cout<<"s1:\t"<<s1.getstring()<<endl;

    char *temp ="hello world";
    s1=temp;
    cout<<"s1:\t"<<s1.getstring()<<endl;

    char temptwo[20];
    strcpy(temptwo,"nice to be here!");
    s1 +=temptwo;
    cout<<"temptwo\t"<<temptwo<<endl;
    cout<<"s1\t"<<s1.getstring()<<endl;

    cout<<"s1[4]"<<s1[4]<<endl;
    s1[4]='x';
    cout<<"s1:\t"<<s1.getstring()<<endl;

    cout<<"s1[999]\t"<<s1[999]<<endl;

    string s2("another string");
    string s3;
    s3=s1+s2;
    cout <<"s3:\t"<<s3.getstring()<<endl;

    string s4;
    s4="why does this this work?";
    cout<<"s4\t"<<s4.getstring()<<endl;
   
    return 0;
}

+ -

관련 글 리스트
5741 [질문] 고수님 전상서.. 이녀기 2512 2001/02/27
5743     Re:[질문] 고수님 전상서.. 임승균.조로 2569 2001/02/27
5757         Re:Re:[질문] 고수님 전상서.. 이녀기 2297 2001/02/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.