Maison  >  Article  >  développement back-end  >  Pourquoi GetCurrentDirectory() lève-t-il une exception lors de la tentative de création d'un fichier ?

Pourquoi GetCurrentDirectory() lève-t-il une exception lors de la tentative de création d'un fichier ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-08 14:59:01180parcourir

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

Dépannage de l'exception GetCurrentDirectory()

Votre code cherche à créer un fichier dans le répertoire actuel, mais une exception se produit au niveau de GetCurrentDirectory(). Pour comprendre le problème, examinons les paramètres utilisés :

  • MAX_PATH : Il s'agit d'une constante représentant la taille de chemin maximale prise en charge par Windows. Utilisez TCHAR Buffer[MAX_PATH] au lieu de NPath = NULL.
  • NPath : Le type LPTSTR est un pointeur vers une chaîne de caractères. Initialisez-le d'abord avec TCHAR Buffer[MAX_PATH].

De plus, la récupération du chemin de l'exécutable à l'aide de GetCurrentDirectory() n'est pas fiable. Utilisez plutôt la fonction GetModuleFileName :

TCHAR buffer[MAX_PATH] = { 0 };
GetModuleFileName(NULL, buffer, MAX_PATH);

Pour une approche plus complète, considérez la fonction suivante qui extrait le répertoire sans le nom du fichier :

#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);
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn