Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa GetCurrentDirectory() membuang pengecualian apabila cuba mencipta fail?

Mengapa GetCurrentDirectory() membuang pengecualian apabila cuba mencipta fail?

Linda Hamilton
Linda Hamiltonasal
2024-11-08 14:59:01181semak imbas

Why is GetCurrentDirectory() throwing an exception when trying to create a file?

Menyelesaikan masalah GetCurrentDirectory() Exception

Kod anda bertujuan untuk mencipta fail dalam direktori semasa, tetapi pengecualian berlaku di GetCurrentDirectory(). Untuk memahami isu ini, mari kita mendalami parameter yang digunakan:

  • MAX_PATH: Ini ialah pemalar yang mewakili saiz laluan maksimum yang disokong oleh Windows. Gunakan TCHAR Buffer[MAX_PATH] dan bukannya NPath = NULL.
  • NPath: Jenis LPTSTR ialah penunjuk kepada rentetan aksara. Mulakan dengan TCHAR Buffer[MAX_PATH] dahulu.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn