Kod anda bertujuan untuk mencipta fail dalam direktori semasa, tetapi pengecualian berlaku di GetCurrentDirectory(). Untuk memahami isu ini, mari kita mendalami parameter yang digunakan:
Selain itu, mendapatkan semula laluan boleh laku menggunakan GetCurrentDirectory() tidak boleh dipercayai. Gunakan fungsi GetModuleFileName sebaliknya:
TCHAR buffer[MAX_PATH] = { 0 }; GetModuleFileName(NULL, buffer, MAX_PATH);
Untuk pendekatan yang lebih menyeluruh, pertimbangkan fungsi berikut yang mengekstrak direktori tanpa nama fail:
#include <windows.h> #include <string> #include <iostream> std::wstring ExePath() { TCHAR buffer[MAX_PATH] = { 0 }; GetModuleFileName(NULL, buffer, MAX_PATH); std::wstring::size_type pos = std::wstring(buffer).find_last_of(L"\/"); return std::wstring(buffer).substr(0, pos); }
Atas ialah kandungan terperinci Mengapa GetCurrentDirectory() membuang pengecualian apabila cuba mencipta fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!