Avatar ·

كيفية التحقق بسرعة من وجود ملف في C++ (C++11/14/17)؟

مرحباً بالجميع! أكتب بلغة C++ منذ حوالي عام، لكني حتى الآن لم أجد طريقة أفضل بشكل قاطع للتحقق مما إذا كان الملف موجوداً على القرص. المشكلة أنني بحاجة للقيام بذلك بشكل متكرر جداً — في حلقة أعالج مئات الملفات، وكل ملي ثانية مهمة. حالياً أستخدم هذا الكود:

#include <fstream>
bool fileExists(const std::string& filename) {
    std::ifstream f(filename.c_str());
    return f.good();
}
إنه يعمل، لكني أشك في أن هذا ليس الخيار الأسرع، لأنه يفتح الملف بالكامل. جربت أيضاً استخدام `stat()`:

#include <sys/stat.h>
bool fileExists(const std::string& name) {
    struct stat buffer;
    return (stat(name.c_str(), &buffer) == 0);
}
لكن هذا كود يعتمد على المنصة (Windows لا يدعم `stat` بدون وحدات ماكرو إضافية). سمعت أنه في C++17 ظهر `std::filesystem`، لكني لست متأكداً من مدى سرعته. السؤال: ما هي الطريقة الأسرع والأكثر