C/C++ ポインタ入門 > 文字列関数 > replace
Nobuhide Tsuda
Nov-2013
指定位置から指定サイズだけ削除文字列:void my_replace(char *buf, const char *before, const char *after)
void my_replace(char *buf, const char *before, const char *after)
{
int blen = strlen(before); // 検索文字列長
int alen = strlen(after); // 置換文字列長
while( (buf = strstr(buf, before)) != 0 ) { // 検索文字列があれば
my_strdel(buf, 0, blen); // 検索文字数分削除
my_strins(buf, after); // 置換文字列挿入
buf += alen; // 置換文字数分前に進める
}
}
解説:
- 全置換処理は文字列処理の集大成とも言うべき関数です。
- が、これまで実装してきた関数を使えば簡単に実装することが出来ます。
- まずは、検索・置換文字列それぞれに文字数を数えておきます。
- strstr() を使って、検索文字列を検索し、見つかれば検索文字列を削除し、置換文字列を挿入します。
- 検索文字列が見つからなくなるまで、ループを回します。
- replace() の様にある程度複雑なものは、なるべく既存の関数を使用して処理をするように記述しましょう。
- その方が文書性が高く、バグが入り込むことも少なくなります。
前:
| 次: