Annavl 2022-10-07 19:41 采纳率: 33.3%
浏览 25
已结题

“STR::STR(char [],char [])”: 无法将参数 1 从“const char [9]”转换为“char []”

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容

照着书上一个字一个字敲的,还报错,无语了检查了好几遍,不可能是我的问题
报错原因:严重性 代码 说明 项目 文件 行 禁止显示状态
错误 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;
}

  • 写回答

4条回答 默认 最新

  • 叶落花枯 2022-10-07 20:13
    关注

    11行改成 STR(const char s1[], const char s2[])
    或者 58行改成 STR s1((char *)"adb12345", (char *)"abcdefg23xz");

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 10月15日
  • 已采纳回答 10月7日
  • 创建了问题 10月7日

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大