ちょっと素朴な疑問から質問します。
Windows OS の環境下(限定)でパスの区切り文字として(\)文字と(/)文字の
どちらの文字を普段は利用しますか?
多くの場合は両方ともパス区切りとして有効ですが、一部(/)文字では上手く
パスを指定できなかった経験があります。そこでパス区切りとしては(\)文字を
普段は使っています。文字列では \\ と重ねるため見づらいこともありますが
(/)文字より(\)文字を使った方が安全(必ず指定できる)という考えで使っています。
皆様はパス区切りの文字として(\)文字、(/)文字のどちらを利用しますか?
また理由があって使い分けていますか?
この2点についてお聞きしたいです。
それでは回答をお待ちしています。
No.4ベストアンサー
- 回答日時:
> 多くの場合は両方ともパス区切りとして有効ですが、一部(/)文字では上手く
> パスを指定できなかった経験があります。
Windows API に関しては,'\\' でも '/' でもかまわないようです.
(未確認,DOS 時代からそうだったと思います.)
しかし Shell API では,'/' だとダメなものもあります.
Shell API である SHFileOperation() に '/' 区切りのファイル名を渡して
ごみ箱に移動させたところ,移動は成功するのですが,ごみ箱の中身の表示
がおかしくなります.(「元に戻す」ことはできるので,表示だけの問題らしい.)
http://www5d.biglobe.ne.jp/~noocyte/Programming/ …
・自作のパス名処理ライブラリ (Windows/UNIX 両用) では,
Windows 用としてコンパイルした場合,パス名の解析を行うときに
'\\' と '/' の両方を認識するようにしています.(DOS 時代から)
・また,'\\' と '/' が混在するパス名 (醜い!) の中の区切り文字を
すべて '\\' または '/' の一方に書き替える関数も用意しています.
(DOS 時代にもそんなパス名を表示してしまうアプリケーションが
たまにありましたが,上記の関数はつい昨年作ったばかり.)
・個人的には,日本語環境では '\\' よりも '/' の方が見やすいので好きです.
('\\' がバックスラッシュで表示される英語環境ならば,
どちらも見やすさは同じですが.)
なので,自分専用の自作ツールの中には,区切り文字を全部 '/' に
書き替えてパス名を表示しているものもあります.
(他人 (特に UNIX を使ったことがない人) に公開するツールだと
勝手にそうするわけにはいきませんが,オプションでそうできるように
しているものもあります.)
・コマンドプロンプトでパス名を入力する場合は,
'\\' でないとオートコンプリートが効かない.orz
・Windows の CUI コマンドは,'/' をスイッチと見なしてしまう.orz
(そもそも CP/M を真似て作った MS-DOS 1.0 のこの仕様がすべての元凶!)
・とはいえ,'/' を使うのは,あくまでも表示やその場限りの入力の時だけ.
自作の関数やアプリ以外に渡すパス名は,確実を期して '\\' にする.
ただし Windows/UNIX で共通の #include では '/'.(例:#include <sys/types.h>)
貴重な情報をありがとうございます。
回答を読みながら思い当たる点やいろいろと参考になりました。
>・Windows の CUI コマンドは,'/' をスイッチと見なしてしまう.orz
> (そもそも CP/M を真似て作った MS-DOS 1.0 のこの仕様がすべての元凶!)
(/)のスイッチ文字問題は MS-DOS プロンプト以外に Windows の CUI もスイッチと
見なすとは気づきませんでした。正確には調べようとは思わなかったです。
>Windows API に関しては,'\\' でも '/' でもかまわないようです.
>しかし Shell API では,'/' だとダメなものもあります.
この2つの情報がかなり参考になりました。
一部(/)文字では上手くいかなかった経験はありましたが、どんな処理かを
忘れてしまっていました。今、思うと Shell の API 関数なのかとも思います。
いろいろと参考になりました。
ありがとうございました。
No.3
- 回答日時:
>理由にある『安全確実』とはどのような事でしょうか?
>Unix 系に移植するときも考えて / 文字が安全確実という事でしょうか?
>もし、お時間がありましたら再回答をお待ちしています。
gccを使う場合、クロスコンパイルする場合も含めて"/"で書いておいて問題を起こしたことが無いので安全確実としました。
再回答ありがとうございます。
>gccを使う場合、クロスコンパイルする場合も含めて"/"で書いておいて
>問題を起こしたことが無いので安全確実としました。
そういう理由でしたか。
ありがとうございました。
No.2
- 回答日時:
ソースコードの文字リテラルとしては、バックスラッシュ(\)を使用しています。
#include ディレクティブでは、スラッシュ(/)を使用しています。
理由としては慣習的であることが一番大きいですね。
アドバイスをありがとうございます。
>理由としては慣習的であることが一番大きいですね。
なるほど。そう言われると MS-DOS 時代の習慣で(\)文字を使っていたりしますね。
昔、MS-DOS 時代でスイッチ文字を変更するとコマンドプロンプトで(/)文字も区切り文字
として認識できました。しかし、変更しないと(/)文字が区切り文字として使えないため
ディレクトリの区切り文字としては(\)文字を使うのが習慣になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 ドライブとボリューム 6 2022/10/25 18:38
- その他(Microsoft Office) Excelの条件付き書式についての質問です。 2 2022/09/08 01:25
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) LEFT関数で文字数を指定しないで取りだす方法 7 2023/06/30 09:49
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- ノートパソコン 外付けHDDがDからEに変わってしまいました。元に戻したいです。 2 2022/04/04 14:45
- 政治 私の発明した「二階建て漢字」は使えるでしょうか? 3 2023/02/08 16:40
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
CFileDialogの最初のディレクトリ設定
C言語・C++・C#
-
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
-
4
1 つのヘッダファイルに複数のクラスって?
C言語・C++・C#
-
5
fopne で失敗する原因
C言語・C++・C#
-
6
VC++でUTF-8のファイルを出力したい
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
パス区切りの文字について
-
マクロを使ってフォルダー内に...
-
EXCELからCSVにすると余計なカ...
-
WORDで改ページすると時々グレ...
-
何故、日本は未だに数字を3桁...
-
カンマ区切りの数字をCSVフ...
-
[VBA][Excel]クリップボードか...
-
VBAでtxtファイルを読み込む際...
-
CSVの定義
-
「カンマ」と「コンマ」は同じ...
-
エクセルの区切り位置の設定方法
-
Excel 桁区切りの カンマ シ...
-
メモ帳からエクセルにセル区切...
-
ひとつの命令を複数行に記述
-
PHP カンマをエスケープしたい...
-
TextBoxに文字が正しく配置され...
-
VBScript 日付の比較について
-
VB2005のTextBoxでカン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
マクロを使ってフォルダー内に...
-
カンマ区切りの数字をCSVフ...
-
CSVの定義
-
WORDで改ページすると時々グレ...
-
何故、日本は未だに数字を3桁...
-
データにカンマが入ったCSVデー...
-
3桁ごと?4桁ごと?コンマの...
-
[VBA][Excel]クリップボードか...
-
カンマ区切り
-
VBAでtxtファイルを読み込む際...
-
「カンマ」と「コンマ」は同じ...
-
パス区切りの文字について
-
メモ帳からエクセルにセル区切...
-
EXCELの文字が指数になる
-
C#で、テキストボックスの入力...
-
PHP カンマをエスケープしたい...
-
カンマ区切りでないテキストをc...
おすすめ情報