从'const char*'到'char*'的无效转换[-fpermissive]

fre*_*inn 8 c c++ string

int ::  cadena calculatelenght(const cadena& a, const char* cad)
{
    cadena c;
    int lenght = 0;
    char* punt; punt = cad;
    while(*punt){
        lenght++; punt++;
    }
    return lenght;
}
Run Code Online (Sandbox Code Playgroud)

我有这个问题,我想计算一个C字符串的长度而不使用像strlen我这样的cadena类的其他方法,因为它不是const char*,但现在我不知道该怎么做.

Ker*_* SB 11

您可以声明punt为正确的类型:

const char * punt = cad;
Run Code Online (Sandbox Code Playgroud)


Jon*_*oni 5

你需要:

const char* punt; punt = cad;
Run Code Online (Sandbox Code Playgroud)

  • @freinn你仍然可以移动一个指向`const`的指针,`const char*`只是意味着你无法修改_指针指向的_.如果你想要一个你不能_move_但你可以修改它所指向的指针,那么你做`char*const`,如果你想要一个既不能移动也不能修改什么的指针它指向,你需要`const char*const` (6认同)