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するという感じですね。ちょっと冗長な気もしますが、こういう解決方法でいいんでしょうか。
悩みは尽きませんね。