梵洛何 2015-03-27 07:18 采纳率: 18.2%
浏览 1532

string类自己定义的,怎么一直有错啊,求指教

调试时一直显示无法读取字符串中的字符,怎么办啊,哪里出了问题

 #include<stdio.h>
class String
{
    char * p;
public:
    String(const char *p1=NULL);
    String(String & s);
    String& operator =(String & s);
    String operator +(String & s);
    bool operator ==(String & s);
    bool operator <(String & s);
    bool operator >(String & s);
    ~String();
};


 #include<iostream>
#include"string.h"
using namespace std;
String::String(const char *p1)
{
    if(p1==NULL)
    {p=new char[1];
    *p='\0';
    }
    else
    {
     int len=strlen(p);
     p=new char[len+1];
     strcpy(p,p1);
    }
}
String::String(String &s)
{
    int len=strlen(s1.p);
    p=new char[len+1];
    strcpy(p,s1.p);
}
String& String::operator =(String &s)
{
    delete []p;
    int len=strlen(s2.p);
    p=new char[len+1];
    strcpy(p,s2.p);
    return *this;
}
String   String::operator +(String &s)
{
    int len1=strlen(s3.p);
    int len2=strlen(p);
    String temp;
    temp.p= new char[len1+len2+1];
    strcpy(temp.p,p);
    strcat(temp.p,s3.p);
    return temp;
}
bool  String::operator==(String & s)
{
    if(strcmp(p,s.p)==0)
        return true;
    else return false;
}
bool String::operator>(String & s)
{
    if(strcmp(p,s.p)>0)
        return true;
    else return false;
}
bool String::operator<(String &s)
{
    if(strcmp(p,s.p)<0)
        return true;
    else return false;
}
String ::~String()
{
    delete []p;
    p=NULL;
}


#include"string.h"
using namespace std;
int main()
{
    String  s1;
    return 0;
}
  • 写回答

3条回答 默认 最新

  • oyljerry 2015-03-27 07:59
    关注

    String s1;

    你初始化时,什么字符串都没有赋值

    评论

报告相同问题?

悬赏问题

  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示