首页 >后端开发 >C++ >为什么 GetCurrentDirectory() 在尝试创建文件时抛出异常?

为什么 GetCurrentDirectory() 在尝试创建文件时抛出异常?

Linda Hamilton
Linda Hamilton原创
2024-11-08 14:59:01257浏览

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

对 GetCurrentDirectory() 异常进行故障排除

您的代码试图在当前目录中创建文件,但 GetCurrentDirectory() 发生异常。为了理解这个问题,让我们深入研究一下所使用的参数:

  • MAX_PATH:这是一个常量,表示 Windows 支持的最大路径大小。使用 TCHAR Buffer[MAX_PATH] 而不是 NPath = NULL。
  • NPath:LPTSTR 类型是指向字符串的指针。首先使用 TCHAR Buffer[MAX_PATH] 对其进行初始化。

此外,使用 GetCurrentDirectory() 检索可执行路径并不可靠。请改用 GetModuleFileName 函数:

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

要获得更全面的方法,请考虑使用以下函数来提取不带文件名的目录:

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

以上是为什么 GetCurrentDirectory() 在尝试创建文件时抛出异常?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn