最近、おじさんが作りたいプログラムをきちんとChatGPTに説明すると、おじさんの思った通りのプログラムを作ってくれます。
なんかコツがあるようで、最初の一文で、相手をおだてないといけないらしい。
齟齬が無いように正確に簡潔に仕様を伝えないと思った通り作ってくれないんですが、関数単位で注文を出すとほぼ完璧に作ってくれます。
おじさんのが思った通りの、とてもきれいな美しいコードをはいてくれる。
これほんとちょー便利で凄すぎ。
おじさんが30分くらいかかる仕事を1分でやってくれます。
----------------------------------------
ChatGPT:
ありがとうございます!C++のことで何かお手伝いできることがあれば、どうぞ教えてください。
あなた:
サブディレクトリを含むカレントディレクトリ下の指定した複数の拡張子のファイル名一覧を返す関数を作って
ChatGPT:
サブディレクトリを含むカレントディレクトリ下で指定した複数の拡張子のファイル名をリストで返す関数を、C++で作成するには、C++17以降の標準ライブラリに含まれているstd::filesystem
を利用することができます。
以下のコードでは、指定された拡張子を持つファイルを再帰的に検索し、ファイル名をリストに格納して返す関数get_files_with_extensions
を定義しています。
cpp
#include <iostream>
#include <filesystem>
#include <vector>
#include <string>
namespace fs = std::filesystem;
std::vector<std::string> get_files_with_extensions(const std::string& directory, const std::vector<std::string>& extensions) {
std::vector<std::string> files;
for (const auto& entry : fs::recursive_directory_iterator(directory)) {
if (entry.is_regular_file()) {
std::string file_extension = entry.path().extension().string();
if (std::find(extensions.begin(), extensions.end(), file_extension) != extensions.end()) {
files.push_back(entry.path().string());
}
}
}
return files;
}
int main() {
std::vector<std::string> extensions = {".cpp", ".h", ".txt"};
std::string directory = ".";
std::vector<std::string> files = get_files_with_extensions(directory, extensions);
for (const auto& file : files) {
std::cout << file << std::endl;
}
return 0;
}
------------------------------------------
関数をテストするためのmain関数やコメントまで書いてくれるし、
ほんと気が利いてます。
よく間違うんですが、おだてると正解率が凄い上がる。
すごいよあっているよ!
昔ナイトライダーが私はメインメモリ2Tバイトで動いてますってこと言ってましたが、ChatGPTもだいたいそれくらいですね。
こんなナイトライダーみたいな日が来るなんて。