Косвенный путь к файлам, когда программа вызывается откуда-то еще - PullRequest
0 голосов
/ 11 декабря 2018

У меня проблема с моей консольной программой C ++.Мне нужны файлы словаря для некоторых переводов.Поэтому я прочитал эти файлы в программе и дал им косвенный путь к папке с программой.

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

В режиме отладки это прекрасно работает, потому что VS запускает программу в нужном каталоге, но когда я выпускаюи он вызывается откуда-то еще, например:

Path of Program: c:\Program.exe

И я начинаю его с: другой позиции:

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

Программа не может найти файлы перевода.

Есть ли какая-либо другая возможность установить путь к файлам другими способами, или мне нужно вызывать программу из C: \

Проблема с вызовом программы из определенной папки,что программа запускается exec-функцией nodejs "Child-Prozess", и я не знаю исполняемый путь.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Я не знаю, какую операционную систему использует автор, предположу, что 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;
}

Для lixux readlink("/proc/self/exe", buf, sizeof(buf)); можно использовать вместо GetModuleFileNameA

0 голосов
/ 11 декабря 2018

Я обнаружил путь, по которому «Child-Process» с моего nodejs-Server выполняет программу.Это папка проекта, а не папка моего js-файла.Спасибо за ваш вклад.Я скопировал файлы в папку моего проекта.Извините за трату вашего времени.

...