次のコードが与えられました。
int _tmain(int argc, _TCHAR* argv[]) {
_finddata_t dirEntry;
intptr_t dirHandle;
dirHandle = _findfirst("C:/*", &dirEntry);
int res = (int)dirHandle;
while(res != -1) {
cout << dirEntry.name << endl;
res = _findnext(dirHandle, &dirEntry);
}
_findclose(dirHandle);
cin.get();
return (0);
}
これが行うことは、指定されたディレクトリ (C:) に含まれるすべての名前を出力することです。ここで、サブディレクトリ (存在する場合) 内のすべての名前も出力する必要があります。私はこれまでのところこれを持っています:
int _tmain(int argc, _TCHAR* argv[]) {
_finddata_t dirEntry;
intptr_t dirHandle;
dirHandle = _findfirst(argv[1], &dirEntry);
vector<string> dirArray;
int res = (int)dirHandle;
unsigned int attribT;
while (res != -1) {
cout << dirEntry.name << endl;
res = _findnext(dirHandle, &dirEntry);
attribT = (dirEntry.attrib >> 4) & 1; //put the fifth bit into a temporary variable
//the fifth bit of attrib says if the current object that the _finddata instance contains is a folder.
if (attribT) { //if it is indeed a folder, continue (has been tested and confirmed already)
dirArray.push_back(dirEntry.name);
cout << "Pass" << endl;
//res = _findfirst(dirEntry.name, &dirEntry); //needs to get a variable which is the dirEntry.name combined with the directory specified in argv[1].
}
}
_findclose(dirHandle);
std::cin.get();
return (0);
}
今、私は解決策全体を求めているわけではありません (私は自分でそれを実行できるようにしたいのです) が、TCHAR* argv である私の頭を理解できないことが 1 つだけあります。argv[1] には、「コマンド引数」の下のプロジェクト プロパティに入力したものが含まれていることを知っています。現在、これには、アプリケーションをテストするディレクトリ (C:/users/name/New folder/*) が含まれています。サブフォルダーを含むいくつかのフォルダーといくつかのランダムなファイル。argv[1] は現在、次のエラーを返します。
エラー: タイプ "_TCHAR*" の引数は、タイプ "const char *" のパラメーターと互換性がありません
今、私はTCHARをグーグルで検索しました.Unicode文字セットまたはマルチバイト文字セットの使用に応じて、wchar_t *またはchar *のいずれかであることがわかりました(現在Unicodeを使用しています)。また、変換が非常に苦痛であることも理解しています。だから私が求めているのは、_TCHAR と _findfirst パラメーターを使用してこれを回避するにはどうすればよいですか?
dirEntry.name を argv[1] に連結し、最後に「*」を連結し、これを別の _findfirst で使用することを計画しています。私はまだ C++ を学んでいるので、私のコードに対するコメントも大歓迎です。