问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容
照着书上一个字一个字敲的,还报错,无语了检查了好几遍,不可能是我的问题
报错原因:严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2664 “STR::STR(char [],char [])”: 无法将参数 1 从“const char [9]”转换为“char []”
我想要达到的结果
#define _CRT_SECURE_NO_WARNINGS
#include<string>
#include<iostream>
using namespace std;
class STR
{
private:
char* p1,*p2,*p;
public:
STR(char s1[ ], char s2[ ] )//初始化原始字符串并未指针p分配空间
{
int n1 = strlen(s1) + 1, n2 = strlen(s2) + 1;
strcpy(p1 = new char[n1], s1);//strcpy应该是把两个字符串合并的函数
strcpy(p2 = new char[n2], s2);
p = new char[n1 + n2 + 1];
}
void del(char* s)//删除p指向字符串中的重复字符
{
while (*(s + 1))
{
for(char*s1=s+1;*s1;s1++)
if (*s == *s1)
{
*s1 = '\0';
strcat(s, s1 + 1);
s1--;
}
s++;
}
}
void fun()//求p1和p2所指向的两个字符串的并集,并存入指针p所指向的存储空间,
//注意调用del()函数删除结果中的重复字符
{
char* s = p1, * p0 = p;
while (*p0++ = *s++);
s = p2;
p0--;
while (*p0++ = *s++);
del(p);
}
void print()//输出两个原始字符串及他们的并集
{
cout << "原字符串:";
cout << "原字符串:" << p1 << '\t' << p2 << endl;
cout << "它们的并集为" << p<< endl;
}
~STR()//析构函数,释放动态内存
{
delete []p1;
delete []p2;
delete[]p;
}
};
int main()
{
STR s1("adb12345","abcdefg23xz");//先创建s1的STR类对象并且把两个把题目中要求的//字符串合并
s1.fun();//执行合并函数操作
s1.print();//执行输出打印 的操作
return 0;
}