首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求问一个c++有关问题

2013-07-04 
求问一个c++问题//main.cpp#includeiostream#includestr.husing namespace stdint main(){char stra[

求问一个c++问题
//main.cpp
#include<iostream>
#include<str.h>
using namespace std;
int main()
{
    char stra[]="ABCD";
    MyString s1("abcd");
    MyString s2(s1);
    MyString s3(stra);
    MyString s4;
    s4=s3;
    s1.display();
    s2.display();
    s3.display();
    s4.display();
    cout<<endl;
    s3.padLeft(10, '*');
    s3.display();
    cout<<endl;
    s4.remove(0, 3);
    s4.display();
    cout<<endl; 
    getchar();
    getchar();
    return 0;
}


//str.h
using namespace std;class MyString
{
      private:
              int len;
              char *Str;
      public:
             int getLength()
             {
                  return len;
             }
             void display()
             {
                   cout<<Str<<endl;
                   cout<<len<<endl;
             }
             MyString()
             {
                       len=0;
                       Str=NULL;
             }
             MyString(char a[100])
             {
                  int i;
                  for(i=0;a[i]!='\0';i++)
                  {
                      Str[i]=a[i];
                  }
                  len=i-1;
             }


                  
             ~MyString()
             {
                        if(Str!=NULL)
                        {
                           delete[]Str;
                           Str=NULL;
                        }
             }
             MyString(MyString&r)
             {
                        len=r.len;
                        if(len!=0)
                        {
                           Str=new char[len+1];
                           strcpy(Str,r.Str);
                        }
             }
             MyString operator =(MyString r)     
             {
                        len=r.len;
                        if(len!=0)
                        {   
                                 Str=new char[len+1]; 
                                 strcpy(Str,r.Str);
                        }
                        return *this;                        


             }
             MyString padLeft(int n, char padding=' ')
             {
                      MyString strResult;
                      if(n!=0)
                      {
                              strResult.Str=new char[n+1]; 
                      }
                      int src_length = strlen(Str);
                      int i;
                      for (i = 0; i < n - src_length; ++i)
                      {
                          strResult.Str[i] = padding;
                          strResult.Str[len+i], Str[i];
                      }
                      strResult.len = strlen(strResult.Str);
                      return strResult;
             }
             MyString padRight(int n, char padding=' ')
             {
                      MyString strResult;
                      int src_length = strlen(Str);
                      int i;
                      for (i = n; i < src_length; ++i)
                      {
                           strResult.Str[len+i] = padding;


                           strResult.Str[i]=Str[i];
                      }
                      strResult.len = strlen(strResult.Str);
                      return strResult;
             }         
             MyString copy(int startIndex=0, int endIndex=-1)
             {
                      MyString strResult;
                      int i;
                      if(endIndex==-1)
                      {
                          strResult.len=0;
                          for(i=0;i<=len;i++)
                          {
                              strResult.Str[i]=Str[i];
                              strResult.len++;
                          }   
                      }
                      else
                      {
                          strResult.len=0;
                          for(i=startIndex;i<=endIndex;i++)
                          {
                              strResult.Str[i]=Str[i];
                              strResult.len++;


                          }   
                      }                                             
                      return strResult;
             }
             MyString remove(char ch)
             {
                      MyString strResult;
                      int i;
                      strResult.len=0;
                      for(i=0;i<len;i++)
                      {
                          if(Str[i]!=ch)
                          {
                              strResult.Str[strResult.len] =Str[i];
                              strResult.len++;
                          }
                      }
                      return strResult;
             }           
             MyString remove(int index)
             {
                      MyString strResult;
                      int i;
                      for(i=0;i<len;i++)
                      {
                          if(i!=index)


                          {
                              strResult.Str[strResult.len] =Str[i];
                              strResult.len++;
                          }    
                      }
                      return strResult;
             }
             MyString remove(int startIndex,int endIndex)
             {        MyString strResult;
                      int i;
                      strResult.len=0;
                      for(i=0;i<startIndex;i++)
                      {
                            strResult.Str[i]=Str[i];
                            strResult.len++;
                      }
                      strResult.len++;
                      for(i=endIndex;i<=len;i++)
                      {
                            strResult.Str[strResult.len]=Str[i];
                            strResult.len++;
                      }
                      return strResult;
             }
};
求问这个编译没错误的程序为什么运行程序会出错?
[解决办法]
#include "str.h"
str.h是你自定义的文件。<>是系统的头文件。


[解决办法]
好多错误哟,

1、             MyString(char a[100]),谁来给str分配内存?
2、 MyString operator =(MyString r)  很危险,会导致内存泄漏
等等等等

热点排行