无法将const char*转换为char*

ant*_*009 4 c++ visual-studio-2005

Visual Studio c ++ 2005

我在这段代码的最后一行收到错误.

int Utils::GetLengthDiff ( const char * input, int & num_subst ) 
{
    int num_wide = 0, diff = 0 ; 
    const char * start_ptr = input ; 

    num_subst = 0 ; 
    while ( ( start_ptr = strstr ( start_ptr, enc_start ) ) != NULL ) 
    {
        char * end_ptr = strstr ( start_ptr, enc_end ); // Error
Run Code Online (Sandbox Code Playgroud)

所以我改变了这一行,它运作正常

const char * end_ptr = strstr ( start_ptr, enc_end ); 
Run Code Online (Sandbox Code Playgroud)

那么为什么我还需要将end_ptr声明为const呢?

非常感谢,

Joh*_*ler 13

C++有两个这个函数的重载版本.http://www.cplusplus.com/reference/clibrary/cstring/strstr/

const char * strstr ( const char * str1, const char * str2 );
      char * strstr (       char * str1, const char * str2 );
Run Code Online (Sandbox Code Playgroud)

由于您start_ptrconst char *C++编译器解析调用了一个版本const char *作为第一个参数,该版本也返回一个const char *,所以你必须改变你的返回值相匹配.