gpt4 book ai didi

c++ - 在 C++ 中从父文件夹的父文件夹提供文件位置

转载 作者:行者123 更新时间:2023-11-30 03:27:25 37 4
gpt4 key购买 nike

我是 C++ 的新手,我知道这是一个基本问题,但无法从任何地方找到满意的答案,所以我将从父文件夹中读取文件位置,但我不知道如何。

执行的文件在

C:\A\B\C\D\Test.exe

我需要打开的文件在

C:\A\E\F\Open.exe

但我想动态地执行此操作。所以 text.exe 的配置应该给出一个路径到 A,然后到 E 和 F。因为这个程序可以位于任何地方,我不想给出从 C:\

开始的路径

如有任何帮助,我们将不胜感激。如果有帮助,我也在使用 QT。谢谢

编辑:

我正在寻找类似的东西

<a href="../../other/file.pdf">file.pdf</a>

在 html 中

编辑 2:这是我的代码,但它不起作用

QSettings setting("config.ini",QSettings::IniFormat);
QString prolocation = setting.value("ProDir","../../../E/F/pro.exe").toString();

QProcess process;
process.start(prolocation);

配置文件是:

(bla bla 其他设置)

ProDir=../../../E/F/pro.exe

最佳答案

这是一个有效的 Qt 解决方案

#include <QCoreApplication>
#include <QDebug>
#include <QDir>
#include <cassert>

int main(int argc, char **argv)
{
// Init + get app path
//
QCoreApplication app(argc, argv);

QString appPath = app.applicationDirPath();
qInfo() << appPath;

// App path manips
//
QDir dir(appPath);

// Goes up two times... your C\D dirs
bool ok;
ok = dir.cdUp();
assert(ok);
ok = dir.cdUp();
assert(ok);

qInfo() << dir.path();

// Goes to picaud/Temp again
// -> in your case /E/F dirs
ok = dir.cd("picaud");
assert(ok);
ok = dir.cd("Temp");
assert(ok);

qInfo() << dir.path();
}

打印:

"/home/picaud/Temp"
"/home"
"/home/picaud/Temp"

在您的情况下,就像您已经在使用 Qt 一样,我认为这是最简单的方法。您仍然可以使用 C++ 标准 filesystem但这需要使用 C++17 或使用 Boost initial implementation .

关于c++ - 在 C++ 中从父文件夹的父文件夹提供文件位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47386992/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com