if (FindFirst(...) == 0) {
do {
list.push_back(StrRecord.Name);
} while (FindNext(StrRecord) == 0);
FindClose(StrRecord);
}
問題:`FindFirst` 已讀取第一個文件,但 `do-while` 循環體在判斷 `FindNext` 前已執行一次 `push_back`,導致第一個文件被處理,**但若 `FindFirst` 失敗直接返回,則無問題**。實際遺漏通常發生在**判斷條件寫反**或**未處理 `FindFirst` 返回的第一個文件**。
intptr_t handle = _findfirst(pattern.c_str(), &data);
if (handle != -1) {
do {
// 處理 data.name(包含第一個文件)
files.push_back(data.name);
} while (_findnext(handle, &data) == 0);
_findclose(handle);
}