AI chat の練習とC++のファイルの仕組みを知る目的でやってみた
copilotで質問を入れる
質問
C++ std::filesystem を使って、AAAフォルダの中のファイルとフォルダを表示してください。
※ただし、AAAフォルダの中のフォルダの中のファイル名は表示しないでください。
Copilotの回答
以下のコードを試してみてください。このコードは、C++17のstd::filesystemを使用して、指定されたフォルダ内のファイルとフォルダを表示します。ただし、フォルダ内のフォルダの中のファイル名は表示されません。
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main() {
const std::string folder_path = "AAA";
for (const auto& entry : fs::directory_iterator(folder_path)) {
if (entry.is_directory()) {
std::cout << "Directory: " << entry.path().filename().string() << std::endl;
} else {
std::cout << "File: " << entry.path().filename().string() << std::endl;
}
}
return 0;
}
質問
次に、main関数を以下のように変更してください。
int main(int argc, char* argv[])
そして、AAAフォルダは止めて、argv[1]を使用して実行ファイルにドロップしたフォルダ(下記 ※folder)に変更してください。
※ std::string folder = argv[1];
お願いします
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main(int argc, char* argv[]) {
const std::string folder_path = argv[1];
for (const auto& entry : fs::directory_iterator(folder_path)) {
if (entry.is_directory()) {
std::cout << "Directory: " << entry.path().filename().string() << std::endl;
} else {
std::cout << "File: " << entry.path().filename().string() << std::endl;
}
}
system("pause");//<<これは追記した
return 0;
}
実行結果:
適当に作ったテストフォルダを実行ファイルにドロップした
ドロップしたフォルダ名は表示しない
フォルダの中にあるものを表示
File: a.txt
File: b.txt
Directory: resourece
Directory: zapA
続行するには何かキーを押してください . . .
別件でプログラムをCopilotを指示した時、日本語を伝えるのが厳しくて別の苦労で断念。
今回は日本語文を伝えやすい形に、アルゴリズムも単純なものを考慮したところ、すんなりうまくいった。
人のサンプルは、あるあるとしてプラスアルファを入れられてしまい、直感的に理解するのができないので、その部分を削除したものをCopilotに作らせると言うのが目的。
できればプラスアルファする場合、それは置いといて、次のサンプルとして作って欲しいところ。
そうすれば余計な情報が入っていないので理解しやすく誤認して使い方を間違えるリスクも減る。
コツとしてはいきなり目的のプログラムを依頼しない。
小さい量で塩梅を見て追加変更指示をする印象
いろいろ試さないと塩梅加減は難しいかもしれない。
これが理解できたので次回はこれを直感的に使えるツールにする予定
このツールはまだ誰も作っていないかもしれない。
次に続く
Copilotにお礼を伝えた
分かりやすくシンプルなプログラムをありがとうございます。
パッと見て理解しやすいので大変勉強になりました。
返事が帰ってきた
どういたしまして!お役に立てて嬉しいです。
何か他に質問があれば、遠慮なく聞いてくださいね。😊