我的C ++控制台程序有问题。我需要一些词典文件来进行某些翻译。因此,我在程序中读取了这些文件,并给了它们一个指向程序文件夹的间接路径。
String="translation\\PfadzuDatei\\Datei.txt";
在Debugging-Mode(调试模式)下,此方法非常有用,因为VS在正确的目录中启动该程序,但是当我释放它时,会从其他地方调用它,例如:
Path of Program: c:\Program.exe
我从另一个位置开始:
C:\anyPathInConsole\>c:\Program.exe arg1
程序无法找到翻译文件。
是否还有其他可能性以其他方式设置文件的路径,还是必须从C:\
调用程序?从特定文件夹调用程序的问题是,该程序是由nodejs“ Child-Prozess” exec函数启动的,我不知道执行路径。
答案 0 :(得分:0)
我找到了来自我的nodejs-Server的“子进程”执行程序的路径。它是项目文件夹,而不是我的js文件的文件夹。谢谢您的意见。我将文件复制到我的项目文件夹中。 抱歉浪费您的时间。
答案 1 :(得分:0)
我不知道作者使用什么操作系统,我将假定使用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