如何获取当前目录?

新手上路,请多包涵

我想在当前目录(运行可执行文件的位置)中创建一个文件。

我的代码:

 LPTSTR NPath = NULL;
DWORD a = GetCurrentDirectory(MAX_PATH,NPath);
HANDLE hNewFile = CreateFile(NPath,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

我在 GetCurrentDirectory() 遇到异常。

为什么我会遇到异常?

原文由 Ivan Prodanov 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 809
2 个回答

我建议您在进一步学习之前阅读一本有关 C++ 的书,因为这有助于获得更稳固的基础。 Koenig 和 Moo 的 Accelerated C++ 非常出色。

要获取可执行路径,请使用 GetModuleFileName

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

这是一个获取没有文件名的目录的 C++ 函数:

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

int main() {
    std::cout << "my directory is " << ExePath() << "\n";
}

原文由 anon 发布,翻译遵循 CC BY-SA 4.0 许可协议

我只是在 Windows 中为此目的使用 getcwd() 方法,它工作得很好。代码部分如下:

 char cwd[256];
getcwd(cwd, 256);
string cwd_str = string(cwd);

但是必须添加 <unistd.h> 库。

原文由 skbr 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏