C++ 不推荐将字符串常量转换为‘;字符*’;编码

C++ 不推荐将字符串常量转换为‘;字符*’;编码,c++,string,gcc,C++,String,Gcc,可能重复: 我在gcc编译器的3个位置收到“从字符串常量到'char*'的不推荐转换”错误 当我在代码块上编译它时,没有错误 char* decodeCode(char* encodedString) { const char* decodedString = ""; // ERROR char* a = encodedString; char store[10000]; for(int j=0;j <strlen(a);j++) {

可能重复:

我在gcc编译器的3个位置收到“从字符串常量到'char*'的不推荐转换”错误

当我在代码块上编译它时,没有错误

char* decodeCode(char* encodedString)
{
    const char*  decodedString = "";   // ERROR
    char* a = encodedString;
    char store[10000];

    for(int j=0;j <strlen(a);j++)
    {
        if (isdigit(a[j]) || a[j] == '#')
            continue;
        else return "";    //ERROR
    }   
} 

int main()
{
    const char* a;
    a = decodeCode("6999066263304447777077766622337778");   // ERROR
    printf("%s",a);
    return 0;
}
char*decodeCode(char*encodedString)
{
const char*decodedString=“;//错误
char*a=编码字符串;
字符存储[10000];

对于(int j=0;j,您需要在变量和函数的声明中添加
const
限定符来解决此问题:

const char* decodeCode(const char* encodedString) {
    ....
    const char* a = encodedString;
    ....
}


注意:函数的底部缺失,但请确保在不复制它的情况下不会返回
store

字符串文字的类型为
const char[]
,这意味着您无法修改其内容。强制转换到
char*
会生成一个没有此类约束的指针。请尝试
const char*
。PS您应该停止编写操作C字符串并使用C样式I/O的代码(通过
printf)有利于典型的C++方法,例如:代码> STD::String ,使用<代码> STD::CUT。@ USE1590595,这是我编译好的,这里是A。是的,你是对的,我正在编辑程序的第二个副本,而不是第一个,我正在编译。现在一切都很好。谢谢你的善意帮助。