IncludeTrailingBackslash
目次に戻る
今日もBorlandのVCLが提供する関数を紹介します。
IncludeTrailingBackslash関数は、引数に渡した文字列の最後尾が「'\\'」で無い場合
は「'\\'」を追加する。というただそれだけの物です。はっきり言って、こんなもん10行もあ
れば作れます。でも、そこそこの頻度で使用するし、文字列がらみなのでバグが入り込
みやすいので、VCLが使えるのであればお勧めな関数の一つです。
最後に'\\'がつくというので想像ができると思いますが、この関数は主にディレクトリ
名を取り扱いたいときに多用します。
たとえば、ディレクトリ名を引数に受け取りその中に存在するファイルに対して何か処
理をしたい場合を考えてみてください。
int MyFunctionForDirectory( char* directory )
{
/* 指定したディレクトリに対して何か処理をする */
:
:
:
return 0;
}
この関数内で、引数のディレクトリにある「input.dat」というファイルのフルパス(ディレクト
リ名+ファイル名)を得たい場合を考えます。あなたならどうしますか?
sprintf( buff , "%sinput.dat" , directory );
それとも
sprintf( buff , "%s\\input.dat" , directory );
としますか?
両方とも間違いでは無いのですが、これでは信頼性がひくくなります。
そもそも、「ディレクトリ名」って何?って事が問題なのです。
c:\\windows\\
c:\\windows
上の二つは両方ともディレクトリ名です。前者の方がディレクトリ名っぽいですが、ディレ
クトリ名として後者を使っても間違いでは無いはずです。ディレクトリ名を取り扱う場合は
このような事を留意しておかなければいけません。
しかし、上記の例の前者と後者で処理を分けるのはばかばかしいです。
そこで、関数内部でどちらかに統一してしまうのです。
私は「ディレクトリ名=最後に'\\'がついている」の方が好きなので、
IncludeTrailingBackslashを使ってディレクトリ名の最後には必ず'\\'をつけるようにします
。
「ディレクトリ名の最後に'\\'はつけない」方が好きな方は
ExcludeTrailingBackslash関数
を使えばそのような名前に統一する事ができます。
関数のヘルプ(コメント)に、「引数のディレクトリ名の最後には'\\'がついていなくては
いけない」と書くような関数は作らない方が良いです。絶対に後で後悔します。
追伸
関数のコメントに「引数のディレクトリ名の末尾には'\\'がついていてもついていなくて
もかまいません」と一言入れておくと、その関数を使う人(自分自身も含めて)は安心して
その関数を使うことができます。
目次に戻る