
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Excel(エクセル) 複数のブックをひとつのブック(複数のシートにまとめる)場合にシートとの順番について 5 2022/12/28 20:47
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
boost::archive::xml_oarchive...
-
string型の固定長文字列を配列...
-
shared_ptr クラスについて
-
ファイル名のリスト取得について2
-
数値を std::string に変換
-
isdigitの挙動について
-
修正箇所の指摘のお願い(文字列...
-
#define中の#のエスケープ
-
なぜ、C++の標準ヘッダをインク...
-
clock関数のコンパイルエラーで
-
DLLでダイアログ
-
Pascalへの変換について
-
組み合わせと順列 アルゴリズム
-
C++での <iostream.h>と<iostre...
-
C++でのmath.hやstdio.hの使用...
-
openCVで動画が読み込めないエ...
-
LinuxのQtに関する質問です。
-
C++で、環境変数の読み込み方を...
-
C++のifstreamの使い方
-
VC++2010 EE で #ifdef _MSC_VE...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VC++で文字列から任意の文字を...
-
なぜ、C++の標準ヘッダをインク...
-
構文エラーが出ているのですが...
-
enumの値から定義名を文字列化...
-
JPEGやPNGが読めるLoadImage関数
-
std::map の const 修飾について
-
VS2019でofstreamが未定義になる
-
_tcscat がうまくいきません(V...
-
空ENTERの判別
-
構造体配列のvectorへの変換と...
-
switch文のエラーについて
-
std::wstringのメモリリークに...
-
#define中の#のエスケープ
-
C++でShowCursorを使いたい。
-
findnext();について
-
【C++】ヘッダ内でstringを格納...
-
#include "fstream.h"
-
CStringとString
-
#defineの使い方について
-
iostream インクルード時に発生...
おすすめ情報