Apabila cuba membuka fail menggunakan ifstream dan ia gagal, selalunya wajar untuk mendapatkan semula sebab di sebalik kegagalan. Begini cara untuk melakukannya:
Setiap panggilan sistem yang gagal mengemas kini nilai errno global. Nilai ini boleh digunakan untuk mendapatkan maklumat lanjut tentang ralat:
ifstream f; f.open(fileName); if (f.fail()) { cerr << "Error: " << strerror(errno); }
Perhatikan bahawa strerror menyediakan mesej ralat sebagai rentetan.
Jika menggunakan kaedah ini dalam aplikasi berbilang benang, adalah penting untuk mempertimbangkan kemungkinan panggilan sistem lain mengubah suai errno antara f.open dan errno retrieval.
Pada sistem POSIX, errno ialah thread-local, bermakna perubahan yang dibuat padanya dalam satu thread tidak menjejaskan thread lain. Ini tidak semestinya berlaku pada semua sistem.
Pada mulanya, ia mungkin kelihatan seperti e.what() adalah pendekatan yang lebih baik, kerana ia lebih idiomatik dalam C . Walau bagaimanapun, rentetan yang dikembalikan oleh fungsi ini adalah khusus pelaksanaan dan mungkin tidak selalu memberikan maklumat berguna tentang kegagalan.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Mendapat Mesej Ralat daripada Gagal `ifstream` Dibuka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!