windowsで任意のフォルダにあるファイル名のリストを取得する方法を教えて頂きました。
※例えば*.ecdのファイルリストを取得する場合です。
これを作成された日付が古い順に取得する事は出来ますでしょうか
#include <windows.h>
#include <stdio.h>
int main() {
WIN32_FIND_DATA ffd;
HANDLE h = FindFirstFile("d:\\work\\*.ecd", &ffd);
if ( h != INVALID_HANDLE_VALUE ) {
do {
puts(ffd.cFileName);
} while ( FindNextFile(h, &ffd) );
FindClose(h);
}
}
No.4ベストアンサー
- 回答日時:
× strcpy(*ecoFileList, iter->second);
○ strcpy(*ecoFileList, iter->second.c_str());
No.3
- 回答日時:
> ただこちらの環境だとエラーが出ました。
。> 間違い等ありましたら教えて下さい。
そちらの環境がいかなるものかわからんので教えようがない。
どこでどんなエラーがでたのかわからんので教えようがない。
この回答への補足
すみません、一応考えてみましたが、文字列のコピーでエラーになります。
error C2664: 'strcpy' : 2 番目の引数を 'std::string' から 'const char *' に変換できません。(新しい機能 ; ヘルプを参照)
との事です。
これで解決出来るのですが、おわかりですか?
charにコピー出来るなら何を使用しても構わないのですが(strcpyを使用しています)
int DML_Backup::searchEcoDataFileName(char (*ecoFileList)[32])
{
map_type files;
WIN32_FIND_DATA find_data;
HANDLE handle = FindFirstFile("*.ecd", &find_data);
if ( handle != INVALID_HANDLE_VALUE) {
do {
files.insert(map_type::value_type(
find_data.ftLastWriteTime, find_data.cFileName));
} while ( FindNextFile( handle, &find_data) );
FindClose(handle);
}
char string[32];
for ( map_type::iterator iter = files.begin();
iter != files.end(); ++iter ) {
strcpy(*ecoFileList, iter->second);
ecoFileList++;
}
}
No.2
- 回答日時:
> 出来ましたらどなたかソートの方法を教えてください
C++で書いてみた。 Cはメンドクセーので勘弁して。
#include <windows.h> // FindFirstFile,FindNextFile, etc.
#include <utility> // pair
#include <map> // multimap
#include <string> // string
#include <iostream> // cout, endl
#include <iomanip> // setfill, setw
using namespace std;
bool operator<(const FILETIME& x, const FILETIME& y) {
if ( x.dwHighDateTime < y.dwHighDateTime ) return true;
if ( y.dwHighDateTime < x.dwHighDateTime ) return false;
return x.dwLowDateTime < y.dwLowDateTime;
}
int main() {
multimap<FILETIME,string> files;
WIN32_FIND_DATA ffd;
HANDLE h = FindFirstFile("d:\\work\\*.cpp", &ffd);
if ( h != INVALID_HANDLE_VALUE ) {
do {
files.insert(make_pair(ffd.ftCreationTime, ffd.cFileName));
} while ( FindNextFile(h, &ffd) );
FindClose(h);
}
for ( auto iter = files.begin(); iter != files.end(); ++iter ) {
SYSTEMTIME t;
FileTimeToSystemTime(&iter->first,&t);
cout << setfill('0');
cout << setw(4) << t.wYear << '/'
<< setw(2) << t.wMonth << '/'
<< setw(2) << t.wDay << ' '
<< setw(2) << t.wHour << ':'
<< setw(2) << t.wMinute << ':'
<< setw(2) << t.wSecond << '.'
<< t.wMilliseconds << '\t'
<< iter->second
<< endl;
}
}
No.1
- 回答日時:
できますとも。
WIN32_FIND_DATA構造体の中に作成された日時が格納されています。
それをキーにソートすればいい。
参考URL:http://msdn.microsoft.com/en-us/library/aa365740 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構文エラーが出ているのですが...
-
なぜ、C++の標準ヘッダをインク...
-
vc++の使い方について
-
#defineの使い方について
-
ファイル名のリスト取得について2
-
C++での <iostream.h>と<iostre...
-
C言語 ストリームについて。
-
このプログラミング誰か教えて...
-
VxWorks 6.4ソケット接続につい...
-
VC++2010 EE で #ifdef _MSC_VE...
-
_tcscat がうまくいきません(V...
-
途中からMFCを使用したい
-
プログラミング
-
CStringとString
-
DLLでダイアログ
-
UNICODE環境でCStringをstd::st...
-
C言語のポインターで詰まっている
-
C++で大量のエラーが出る
-
VC++で文字列から任意の文字を...
-
iostream インクルード時に発生...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラーが出ているのですが...
-
enumの値から定義名を文字列化...
-
VC++で文字列から任意の文字を...
-
なぜ、C++の標準ヘッダをインク...
-
指定した文字を削除したい
-
std::map の const 修飾について
-
std::wstringのメモリリークに...
-
VHDLのsignedとunsignedの違いは?
-
C言語のエラーを修正したい
-
switch文のエラーについて
-
#define中の#のエスケープ
-
空ENTERの判別
-
構造体配列のvectorへの変換と...
-
#include "fstream.h"
-
VS2019でofstreamが未定義になる
-
C言語のポインターで詰まっている
-
C++ 平均値、最大値と最小値の...
-
C++での <iostream.h>と<iostre...
-
gccでコンパイル時のエラー
-
VxWorks 6.4ソケット接続につい...
おすすめ情報