strstr()是正常的吗?

时间:2016-10-27 07:06:04

标签: c++

说明

strstr声明:
char *strstr(const char *haystack, const char *needle);

我的功能定义:

hostinfo_t *extract_host_from_url(const char *url) {
    /* ... */
    char *scheme_pos = strstr(url, "://");
    /* ... */
}

我如何使用

void rewrite_url(string &url) {
    /* ... */
    hostinfo_t * hostinfo = extract_host_from_url(url.c_str());
    /* ... */
}

错误信息:

  

错误:从'const char *'无效转换为'char *'[-fpermissive]
  char * scheme_pos = strstr(url,“://”);

问题:

哪里出错?

1 个答案:

答案 0 :(得分:9)

strstr中给出的<cstring>的C ++声明是overloaded

  const char* strstr( const char* str, const char* target );
        char* strstr(       char* str, const char* target );

使用您的参数集,您将调用第一个函数,这就是返回类型为const char*的原因。