C++学習ログの実現文字列の加減接続

3083 ワード

 String          len          ,     String   、   。  ,s1 + s2           ;s1 - s2  s1      s2           。
  :              VS2012 codeblocks   ,   codeblocks   ,    vs2012.          vs2012       。       vs2012   ,     ,  codeblocks   。        ,            。

#include 
#include 
using namespace std;

/* P324   , String          len          ,
      String      。        :
  s1 + s2          ;
  s1 - s2   s1      s2           ;
*/

class String
{
public:
    String( );                         //      
    String(const char *s);
    String(String &str);               //    
    ~String();
    void display( );
    String & operator = (const String & s);
    friend String operator + (String &s1,String &s2 );
    friend String operator - (String &s1,String &s2 );
private:
    char *p;
    int len;                                       //     ,       
};
String::String()
{
    len = 0;
    p = NULL;
}
String::String(const char *s)
{
    len = strlen(s);
    p = new char[len+1];
    strcpy(p,s);
}

String::String(String &str)
{
    len = str.len;
    if(p!=NULL)
        delete []p;   //          ,         ,       
    p = new char[len+1];
    strcpy(p,str.p);
}

String::~String()
{
    if(!p)
        delete []p;
}
String & String::operator=(const String &s)
{
    if(!p)
        delete [] p;
    len = s.len;
    p=new char[len+1];
    strcpy(p,s.p);
    return *this;
}
void String::display( )     //  p       
{
    cout<

=0&&c1[i]==' ') --i; c1[i+1]='\0'; //c2 char *c2=new char[s2.len+1]; strcpy(c2,s2.p); i=0; while(i