c++设计一个字符串类,通过重载“+”运算符实现两个字符串的拼接运算?
设计一个字符串类,通过重载“+”运算符实现两个字符串的拼接运算。分别用成员函数和友元函数的方法实现如下三种拼接形式:1)字符串类对象+字符数组//成员函数的方法2)字符串...
设计一个字符串类,通过重载“+”运算符实现两个字符串的拼接运算。分别用成员函数和友元函数的方法实现如下三种拼接形式:
1)字符串类对象+字符数组 //成员函数的方法
2)字符串类对象+字符串类对象 //成员函数的方法
3)字符数组+字符串类对象 //友元函数的方法
编写主函数测试设计的正确性。 展开
1)字符串类对象+字符数组 //成员函数的方法
2)字符串类对象+字符串类对象 //成员函数的方法
3)字符数组+字符串类对象 //友元函数的方法
编写主函数测试设计的正确性。 展开
1个回答
展开全部
#include <iostream>
#include <string>
using namespace std;
class MyString
{
public:
MyString() {}
~MyString(){}
MyString(const char p[])
{
buf = p;
}
//1)字符串类对象+字符数组 //成员函数的方法
MyString operator+(const char p[])
{
MyString* tmp = new MyString();
tmp->buf.append(this->buf);
tmp->buf.append(p);
return *tmp;
}
//2)字符串类对象 + 字符串类对象 //成员函数的方法
MyString operator+(const MyString& s)
{
MyString* tmp = new MyString();
tmp->buf.append(this->buf);
tmp->buf.append(s.buf);
return *tmp;
}
//3)字符数组+字符串类对象 //友元函数的方法
friend string myStrcat(const char p[],const MyString& s);
void print() { cout << buf << endl; }
private:
string buf;
};
string myStrcat(const char p[], const MyString& s)
{
string str = s.buf;
return p+str ;
}
int main()
{
char p[] = "test01";
MyString str1 = "test02";
MyString str2 = "test03";
(str1 + p).print();
(str1 + str2).print();
cout << myStrcat(p, str1) << endl;
}
#include <string>
using namespace std;
class MyString
{
public:
MyString() {}
~MyString(){}
MyString(const char p[])
{
buf = p;
}
//1)字符串类对象+字符数组 //成员函数的方法
MyString operator+(const char p[])
{
MyString* tmp = new MyString();
tmp->buf.append(this->buf);
tmp->buf.append(p);
return *tmp;
}
//2)字符串类对象 + 字符串类对象 //成员函数的方法
MyString operator+(const MyString& s)
{
MyString* tmp = new MyString();
tmp->buf.append(this->buf);
tmp->buf.append(s.buf);
return *tmp;
}
//3)字符数组+字符串类对象 //友元函数的方法
friend string myStrcat(const char p[],const MyString& s);
void print() { cout << buf << endl; }
private:
string buf;
};
string myStrcat(const char p[], const MyString& s)
{
string str = s.buf;
return p+str ;
}
int main()
{
char p[] = "test01";
MyString str1 = "test02";
MyString str2 = "test03";
(str1 + p).print();
(str1 + str2).print();
cout << myStrcat(p, str1) << endl;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |