C++高手进。

题目:编写程序,实现str=str1+str2的操作,此处运算符“+”表示两个字符串str1,str2连接成一个字符串str。用键盘将两个字符串输入字符数组str1,st... 题目:
编写程序,实现str=str1+str2的操作,此处运算符“+”表示两个字符串str1,str2连接成一个字符串str。用键盘将两个字符串输入字符数组str1,str2中,连接后的字符串存放在字符数组str中,并输出连接后的字符串str。

--------------------
请编写的比较象一个初学者的完成的
且用while完成。
3Q了。
展开
 我来答
coolwater2008
2010-05-06
知道答主
回答量:8
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>
#include <string.h>

class String
{
public:
String(const char *str = NULL);//构造函数
String(const String &str);//拷贝构造函数
~String(void);

String &operator =(const String &str);//赋值构造函数
String operator +(const String &str);
private:
char *m_data;
};

String::String(const char *str)
{
if(str == NULL)
{
m_data = new char[1];
strcpy(m_data, "");
}
else
{
int length = strlen(str);
m_data = new char[length + 1];
strcpy(m_data, str);
}
}

String::String(const String &str){
int length = strlen(str.m_data);
m_data = new char[length + 1];
strcpy(m_data, str.m_data);
}

String::~String()
{
delete[] m_data;
}

String &String::operator =(const String &str)
{
if(this == &str)
return *this;
delete[] m_data;
int length = strlen(str.m_data);
m_data = new char[length + 1];
strcpy(m_data, str.m_data);
return *this;
}

String String::operator +(const String &str)
{
int length = strlen(str.m_data) + strlen(m_data);
char *temp_data = new char[length + 1];
strcpy(temp_data, m_data);
strcat(temp_data, str.m_data);
return String(temp_data);
}

int main()
{
String str;
String str1("I do it."), str2("you can!");
str = str1 + str2;
return 0;
}
这个之所以没有while是因为还需要重载"<<"、">>",你自己写吧。呵呵,上班(实习)的时候偷偷写的
261074932
2010-05-06 · TA获得超过365个赞
知道小有建树答主
回答量:305
采纳率:0%
帮助的人:167万
展开全部
#include <stdio.h>
void lj(char c1[],char c2[])
{
int i,j=0;
for(i=0;c1[i]!='\0';i++)
{
cout << c1[i];
}
while(c2[j]!='\0')
{
c1[i++]=c2[j++];
}
c1[i]='\0';
}
int main()
{
char c1[200],c2[200];
printf("input 1 string:");
scanf("%s",c1);
printf("input 2 string:");
scanf("%s",c2);
lj(c1,c2);
printf("new string:%s",c1);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1b7f27e
2010-05-06
知道答主
回答量:4
采纳率:0%
帮助的人:6870
展开全部
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
if(argc <=2) return 0;
char * str1 = argv[1];
char * str2 = argv[2];
int len = strlen(str1)+strlen(str2);
char str = new char[len +1];
int counts =0;
len =0;
while(*(str1+counts)!=`\0`)
{
*(str+len) = *(str1+counts);
counts++;
len++;
}
while(*(str2+counts))!=`\0`)
{
*(str+len) = *(str2+counts);
counts++;
len++;
}
*(str+len)=`\0`;
printf("%s + %s = %s",str1,str2,str);
delete [] str;
return 1;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yangjian41727
2010-05-06 · TA获得超过357个赞
知道小有建树答主
回答量:384
采纳率:0%
帮助的人:379万
展开全部
要用到运算符重载呃,写出来就绝对不是初学者的内容了...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式