C++高手进。

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

--------------------
请编写的比较象一个初学者的完成的
且用while完成。
3Q了。

#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是因为还需要重载"<<"、">>",你自己写吧。呵呵,上班(实习)的时候偷偷写的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-06
#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);
}
第2个回答  2010-05-06
#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;
}
第3个回答  2010-05-06
要用到运算符重载呃,写出来就绝对不是初学者的内容了...
相似回答