这个问题被问了很多次,我都提到了,但我需要有点不同。

我正在使用 macbook -> Clion (IDE) for C++
我的程序文件位置/Users/Kandarp/ClionProjects/SimulationParser/main.cpp
当我使用以下函数获取当前目录时,它会给出不同的文件(我认为文件编译和执行的实际路径)

string ExePath() {
char cwd[1024];
if (getcwd(cwd, sizeof(cwd)) != NULL) {
    fprintf(stdout, "Current working dir: %s\n", cwd);
    return cwd;
} else {
    perror("getcwd() error");
    return 0;
}}

它给出了以下答案:/Users/Kandarp/Library/Caches/CLion2016.2/cmake/generated/SimulationParser-50b8dc0e/50b8dc0e/Debug
但我需要我的 .cpp 文件所在的路径。我做错了什么?
请帮忙

最佳答案

你没有做错任何事。
getcwd() 为您提供执行进程的当前目录。

当您指示用于构建 C++ 代码的任何工具运行它时,它只是从该目录运行该进程。

C++ 库中没有任何内容可以告诉应用程序其源代码的位置。

如果您需要应用程序知道其源代码所在的位置,则需要将其作为参数传递给 main() ,或将其放入应用程序读取的某个配置文件或任何类似方法中。

关于C++在Linux中获取源文件目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39481444/

10-11 00:45