在C/C++中是否有办法找到当前执行程序的位置(完整路径)?
(问题argv[0]在于它没有给出完整的路径.)
我一直在C#和Delphi中这样做,但C++是邪恶的.目的是在当前目录中创建一个文件(可执行文件正在运行).
我的代码:
LPTSTR NPath = NULL;
DWORD a = GetCurrentDirectory(MAX_PATH,NPath);
HANDLE hNewFile = CreateFile(NPath,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
我在GetCurrentDirectory()中遇到异常.
请告诉我为什么我得到一个例外,如何在C++中更容易?
我想将当前目录设置为解决方案diretory /配置名称.我怎么做?我可以用某种方式使用全局变量吗?
编辑:我正在尝试读取文件,当前目录在代码中间发生变化.我想改回来.
我正在尝试读取我之前成功读取的文件.我正在通过一个库阅读它,我将它原样发送到库(即"myfile.txt").我知道该文件是从working/current目录中读取的.
我怀疑当前/工作目录已经以某种方式发生了变化.我如何检查当前/工作目录是什么?
在GetModuleFileName()需要一个缓冲器和缓冲器作为输入的大小; 但是它的返回值只能告诉我们复制了多少个字符,以及大小是否足够(ERROR_INSUFFICIENT_BUFFER).
如何确定保存整个文件名的实际所需缓冲区大小GetModuleFileName()?
大多数人使用,MAX_PATH但我记得路径可以超过(默认定义为260)...
(使用零作为缓冲区大小的技巧对这个API不起作用 - 我之前已经尝试过)
我希望能够获得当前的源文件路径。
string txt_file = CURRENT_FILE_PATH +"../../txt_files/first.txt";
inFile.open(txt_file .c_str());
有没有办法获得 CURRENT_FILE_PATH ?我不是说可执行路径。我的意思是运行代码的源文件的当前位置。
非常感谢,乔拉。
我通读了一些关于相对路径的主题,但我还是弄错了。我希望某人可以帮助我:)。我使用的是 Visual Studio 2013,Windows 7
我得到以下目录:
这是我的 .exe 文件 D:\uni\c++\ex5\msvc2013\ex5\Debug
这是我要读取的文件 D:\uni\c++\ex5\res\thehead.raw
打开文件的代码:
FILE* f;
f = fopen("..\\..\\..\\res\\thehead.raw", "rb");
if (f == NULL)
printf("FAIL!!");
因为我需要使用相对路径,所以我想通如下:..\ 到达父目录。
所以“..\..\..\”应该让我进入文件夹“D:\uni\c++\ex5\”。
\res 应该打开 res 文件夹。
不用说它失败了,我不知道为什么。任何帮助,将不胜感激。
我在 Visual Studio 2015 中使用 SFML 制作需要我打印文本的游戏。我尝试加载字体并不断收到错误消息,提示“无法创建字体”。我尝试加载几种不同的字体,但它们都不起作用,它们位于正确的目录中,即我的项目所在的文件夹。
这就是它的全部内容,它不起作用:
 sf::Font font;
    if (!font.loadFromFile("arial.ttf"))
        return EXIT_FAILURE;
arial 的 ttf 文件与项目本身位于同一文件夹中,这似乎可以为我在网上找到的其他遇到相同问题的人解决问题。知道为什么字体仍然无法加载吗?
我编写了一个 C++ 软件,该软件需要从其所在的文件夹中读取文件,然后在同一文件夹中写入其他文件。
目前,我通过 shell 导航到复制了可执行文件的文件夹,然后使用./executable_name.
我想通过双击来执行它。如果我这样做,软件告诉我它找不到输入文件,那么就好像它没有在正确的文件夹中执行。
我认为有两种方法:
无论如何,我不知道该怎么做。
有人可以帮帮我吗?
可能重复:
如何在C中查找可执行文件的位置
我正在使用GTK +在C++中编写一个多平台应用程序,我遇到了问题.我必须得到程序路径.例如,当节目在/home/user/program(或C:\Users\user\program.exe)时,我有/home/user/(或C:\Users\user\).
可以以及如何做到这一点?