
C++高手进。
题目:编写程序,实现str=str1+str2的操作,此处运算符“+”表示两个字符串str1,str2连接成一个字符串str。用键盘将两个字符串输入字符数组str1,st...
题目:
编写程序,实现str=str1+str2的操作,此处运算符“+”表示两个字符串str1,str2连接成一个字符串str。用键盘将两个字符串输入字符数组str1,str2中,连接后的字符串存放在字符数组str中,并输出连接后的字符串str。
--------------------
请编写的比较象一个初学者的完成的
且用while完成。
3Q了。 展开
编写程序,实现str=str1+str2的操作,此处运算符“+”表示两个字符串str1,str2连接成一个字符串str。用键盘将两个字符串输入字符数组str1,str2中,连接后的字符串存放在字符数组str中,并输出连接后的字符串str。
--------------------
请编写的比较象一个初学者的完成的
且用while完成。
3Q了。 展开
4个回答
展开全部
#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是因为还需要重载"<<"、">>",你自己写吧。呵呵,上班(实习)的时候偷偷写的
#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是因为还需要重载"<<"、">>",你自己写吧。呵呵,上班(实习)的时候偷偷写的
展开全部
#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);
}
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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要用到运算符重载呃,写出来就绝对不是初学者的内容了...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询