标题:求帮助,不会改错。。。谢谢(用的是VS2010)
取消只看楼主
shinee绿豆
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-11-17
结帖率:50%
已结贴  问题点数:20 回复次数:4 
求帮助,不会改错。。。谢谢(用的是VS2010)
/*基于char*.设计一个字符串MyString并且具有构造函数,析构函数,复制构造函数,并在其中加入重载运算符,使之能满足各种需求
string s1="abc",s2="def";
string s3=s1+s2;         结果是“abcdef”
char s5=s2[1];           结果是“e”*/
#include <iostream>
#include <string>
using namespace std;

class MyString
{
private:
    int i;
    char* string;   
public:
    MyString( )                      //构造函数
    {
        string = new char [1];
        string[0] = '\0';
        i=1;
    }
    ~MyString()                      //析构函数
    {
        delete [] string;
    }
    MyString(const MyString &rhs)    //复制构造函数
    {
        i=strlen(rhs.string);
        string = new char [i+1];
        string[i] = '\0';
        //strcpy(string,rhs.string);
    }
    MyString(const char* s)          //用指针s所指向的字符串常量初始化atring类的对象
    {
        i=strlen(s);
        string = new char [i+1];
        string[i] = '\0';
        //strcpy(string,s);
    }
    MyString operator+(const MyString &s) const //加法运算
    {
        int len = strlen(s.string);
        char* str = new char [len+1];
        str[len] = '\0';
        strcat(string,s.string);
        strcpy(str,string);
        return MyString (str);
    }
    char operator[](int x) const    //按下标查找元素
    {
        if (x>i||x<0)
        {
            cout<<"查找不在范围内!"<<endl;
        }
        else
            return string[i];
    }
    friend ostream & operator<< (ostream &out, const MyString &s)
    {
        out<<s.string;
        return out;
    }
    void show()
    {
        cout<<"加法运算结果为:"<<string[i]<<endl;
    }
};

void main()
{
    int m;
    MyString s1 = "abc",s2="def",s3;
    s3=s1+s2;
    s3.show();
    cout<<"请输入你要查找的信息的下标:";
    cin>>m;
    cout<<"查找的元素为:"<<s3[m]<<endl;
    system("pause");
}
搜索更多相关主题的帖子: private include public 字符串 
2016-11-17 23:06
shinee绿豆
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-11-17
得分:0 
回复 2楼 yangfrancis
我把它取消注释后还是不对啊
MyString(const MyString &rhs)    //复制构造函数
    {
        i=strlen(rhs.string);
        string = new char [i+1];
        string[i] = '\0';
        strcpy(string,rhs.string);
    }
结果还是出不来啊
2016-11-18 16:25
shinee绿豆
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-11-17
得分:0 
回复 4楼 yangfrancis
加法和查找的结果实现不了
2016-11-19 18:47
shinee绿豆
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-11-17
得分:0 
回复 5楼 xufan
请问一下你用的是什么编译器?
2016-11-19 19:36
shinee绿豆
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-11-17
得分:0 
回复 8楼 yangfrancis
嗯嗯,对滴,后面想起来改了,谢谢哒
2016-12-01 11:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-471273-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.253966 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved