C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

空でないディレクトリを削除する /C++ (19/03/15(Fri) 01:01) #90501
Re[1]: 空でないディレクトリを削除する /Azulean (19/03/15(Fri) 06:34) #90505
Re[1]: 空でないディレクトリを削除する /774RR (19/03/15(Fri) 08:26) #90506
│└ Re[2]: 空でないディレクトリを削除する /とっちゃん (19/03/15(Fri) 11:01) #90509
Re[1]: 空でないディレクトリを削除する /ぶなっぷ (19/03/15(Fri) 11:34) #90510


親記事 / ▼[ 90505 ] ▼[ 90506 ] ▼[ 90510 ]
■90501 / 親階層)  空でないディレクトリを削除する
□投稿者/ C++ (4回)-(2019/03/15(Fri) 01:01:17)

分類:[C/C++] 

C++で空でないディレクトリを削除する方法、関数を教えてください。
[ □ Tree ] 返信 編集キー/

▲[ 90501 ] / 返信無し
■90505 / 1階層)  Re[1]: 空でないディレクトリを削除する
□投稿者/ Azulean (1047回)-(2019/03/15(Fri) 06:34:02)
No90501 (C++ さん) に返信
> C++で空でないディレクトリを削除する方法、関数を教えてください。

調べ方例
1. API にないかと探してみる「RemoveDirectory function」
2. docs.microsoft.com のドキュメントを読んでみる
https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-removedirectorya
3.「To recursively delete the files in a directory, use the SHFileOperation function.」という記載を見つける。

[ 親 90501 / □ Tree ] 返信 編集キー/

▲[ 90501 ] / ▼[ 90509 ]
■90506 / 1階層)  Re[1]: 空でないディレクトリを削除する
□投稿者/ 774RR (675回)-(2019/03/15(Fri) 08:26:33)
実は C 言語仕様書 ISO/IEC 9899 において「ファイル」「ディレクトリ」が具体的にどういうものかは規定されていなくて、
なので ISO/IEC 9899 において
- 「ファイルを開く」という操作は存在する (fopen) けれども
- 「ファイルを削除」という操作は存在しない
- 当然ディレクトリの操作も存在しない

POSIX (いわゆる Unix の仕様書) ならば mkdir() や rmdir() といったディレクトリ操作関数があるっす。
https://linuxjm.osdn.jp/html/LDP_man-pages/man2/rmdir.2.html
POSIX API では「空でない」ディレクトリを削除する関数は提供されていないので自作することになるですよ。

Windows ならば既にコメントある通り別の手段が使える。

ということであなたが対象としている OS 名称とかバージョンとかはとても大事。
[ 親 90501 / □ Tree ] 返信 編集キー/

▲[ 90506 ] / 返信無し
■90509 / 2階層)  Re[2]: 空でないディレクトリを削除する
□投稿者/ とっちゃん (580回)-(2019/03/15(Fri) 11:01:25)
C++ でディレクトリを削除というと、std::filesystem::remove_all() ですかね。

https://cpprefjp.github.io/reference/filesystem/remove_all.html

がわかりやすいと思います。
[ 親 90501 / □ Tree ] 返信 編集キー/

▲[ 90501 ] / 返信無し
■90510 / 1階層)  Re[1]: 空でないディレクトリを削除する
□投稿者/ ぶなっぷ (193回)-(2019/03/15(Fri) 11:34:04)
質問内容からして、
> C++で空でないディレクトリを削除する方法、関数を教えてください。
空のディレクトリを削除する方法は分かっているということかな。

であれば、先にディレクトリ内のファイルを全削除して空にしてから
削除すればいいのは分かるよね?

そういう話ではない?
1関数で一気に削除できるものがあるかどうかと言う話?
であるなら、私が知る限りは無いです。

[ 親 90501 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -