複数のファイルパスの区切り文字

解決


QR  2009-12-22 20:29:08  No: 71202

Visual C++プロジェクト設定内の追加ディレクトリ項目のように
複数のファイルパス文字列を1つのCStringにまとめて、
独自の設定ファイルやレジストリ内に1つの項目として入れたいのですが、
ファイル表記内に使うのを禁止されている"|"を区切り文字として使うと
なにか正しく取り出せなくなるケースは出てきますでしょうか?

Visual C++のように";"を使うと、ファイルパス内に";"が入っているケースのために
囲み文字の処理が必要になってきますし、"|"なら囲み文字の処理も不要かなと思ったのですが。

よろしくお願いします。


仲澤@失業者  2009-12-22 22:30:41  No: 71203

特に問題は無いと考えられます。

注意しなければならないのは、「複数のパス」は「単一パス」
の集合なので、その構造を崩してはならないという点です。
'|'等を使っての結合は、UIに限定したときの一時的な表現方法
なのであって、内部の構造にまで持ち込むべきでないと思います。

MBCを使用している場合などには漢字コード内に'|'相当のByteコードが
含まれているかもしれないことも考慮しなければなりません。


QR  2009-12-22 23:48:04  No: 71204

> '|'等を使っての結合は、UIに限定したときの一時的な表現方法
> なのであって、内部の構造にまで持ち込むべきでないと思います。

はい、内部ではCStringの配列で持っています。

各パス名を一つずつ保存してもよいのでしょうけど、
エントリ名を連番にしたり要素数を入れたりしなくてはいけませんし、
それならVCの設定っぽく区切り文字でまとめてみようかなと思いました。

VCではパス名に";"が入っている要素のみ囲み文字が入るようですが、
";"ではなく"|"を使ってれば、囲み文字自体不要だったということですよね。
もちろん、他の項目と表記方法を合わせたとかそういう理由があってのことでしょうけど。

ありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加