文件的间接路径,当从其他地方调用程序时

Indirect Path to Files, when program is called from somewhere else

我的 C++ 控制台程序有问题。我需要一些字典文件来进行一些翻译。所以我在程序中读取了这个文件,并给了他们一个程序文件夹的间接路径。

String="translation\PfadzuDatei\Datei.txt";

在调试模式下效果很好,因为 VS 在正确的目录中启动程序,但是当我释放它时,它会从其他地方调用,例如:

Path of Program: c:\Program.exe

我从以下位置开始:

C:\anyPathInConsole\>c:\Program.exe arg1

程序找不到翻译文件。

是否有任何其他可能以其他方式设置文件路径,或者我是否必须从 C:\

调用程序

从特定文件夹调用程序的问题是,该程序是由 nodejs "Child-Prozess" exec 函数启动的,我不知道执行路径。

我从我的nodejs-Server中找到了"Child-Process"执行程序的路径。它是项目文件夹,而不是我的 js 文件的文件夹。谢谢您的意见。我将文件复制到我的项目文件夹中。 抱歉浪费您的时间。

不知道作者用的是什么操作系统,假设是windows。您可以通过连接 *.exe 的路径和相对文件路径来获取文件的绝对路径:

std::string getPath()
{
   char buf[256];
   // Get file name
   GetModuleFileNameA(nullptr, &buf[0], sizeof(buf));

   // Extract path from full name
   std::string path = buf;
   const size_t last_slash_idx = path.rfind('\');
   if (std::string::npos != last_slash_idx)
   {
      path = path.substr(0, last_slash_idx);
   }
   // Add relative path
   path += "\";
   path += "translation\PfadzuDatei\Datei.txt";
   return path;
}

for lixux readlink("/proc/self/exe", buf, sizeof(buf)); 可以代替GetModuleFileNameA