C++ 类型的值不能用于初始化类型的实体 “const char *“ 类型的值不能用于初始化

使用VS2019的时候会出现这样的错误

在这里插入图片描述

测试出错代码

#include<iostream>
#include<stdio.h>
#include <string.h> 
using namespace std;
// 返回两个字符串中较长的一个
char* func(char* str1,char* str2)
{
    
    
    if (strlen(str1) >= strlen(str2))
    {
    
    
        return str1;
    }
    else
    {
    
    
        return str2;
    }
}

int main()
{
    
    
    char* s1 ="C Language";
    char* s2 = "C is very great!";
    char* longstr = func(s1, s2);
    cout << "Long string: " << longstr << endl;
    return 0;
}

报错代码:

char* s1 ="C Language";
char* s2 = "C is very great!";

在这里插入图片描述

解决方案

1. 可以先用字符数组存储,再将数组名赋值给指针。

char m_s1[] = " C Language";
char m_s2[] = " C is very great!";
char* s1 = m_s1;
char* s2 = m_s2;

2.对变量进行强转

char* s1 =(char*)"C Language";
char* s2 =(char*)"C is very great!";

3.在变量前加const

const char* s1 ="C Language";
const char* s2 = "C is very great!";

4.在项目上右键,在弹出菜单上选择“属性”,选择“C/C++”,然后在“语言”中,把“符合模式”改为“否”就好了。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_56935264/article/details/127182510