const付の変数をconst無しの関数とかに渡したい場合

ってどうするのが一番なんだろうか。

例えばこういうコード

int func (const char* s1,const char* s2) {
    char* p;
    p = strstr(s1,s2);
    if ( p == NULL ) return 0;
    return 1;
}
main.cpp(5) : error C2440: '=' : 'const char *' から 'char *' に変換できません。
        変換で修飾子が失われます。

strstrの第一引数はchar*型なのでconst char*型の変数が渡せません。

とりあえず僕が考えたのは下記コードです。

int func (const char* s1,const char* s2) {
    char* p;
    char* tmp = _strdup(s1);
    p = strstr(tmp,s2);
    free(tmp);
    if ( p == NULL ) return 0;
    return 1;
}

_strdupを使って変数のコピーを作ります。

コピーされた変数はchar*型で定義しているのでstrstrに渡せます。

で使い終わったらfreeするという感じですね。ちょっと冗長な気もしますが、こういう解決方法でいいんでしょうか。

悩みは尽きませんね。