c++ 在运行时使用相对路径复制现有文件

jhkqcmku  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(84)

我有一个将数据保存到二进制文件中的方法。我试图对这个方法进行单元测试。这就是为什么我为自己制作了一个控制器二进制文件,其中包含我应该使用我的方法保存的数据。
我的文件夹树看起来像这样:

C:.
├───include
    └─── header.h
├───source
│   └─── source.cpp
└───tests
    └───Test
        ├───data
        │   └── controller.bin
        └─── unitary_test.cpp

字符串
当在unitary_test. cpp中运行测试时,我想将uniter.bin复制到我创建的临时文件夹中,在这个文件夹中,我使用我的测试方法创建文件。
事情是,我无法管理使用相对路径复制此文件,因为我的文件找不到。

QTemporaryDir dir;
std::string controllerPath = "controller.bin";
QFile::copy(QString::fromStdString("./data/" + controllerPath), QDir(dir.path()).filePath(QString::fromStdString(controllerPath)));


有没有一种方法可以在运行时使用相对路径来实现这一点?

lc8prwob

lc8prwob1#

相对路径必须相对于运行时当前目录。可能您从另一个当前目录执行unitary_test,其中不存在相对路径data/data.bin。
“unitary_test.exe”在哪里?据我所知,Qt Creator将生成的结果放到单独的目录中(而不是源目录中)
找到unitary_test.exe并将“data”目录复制到它的目录。通常应该在构建脚本中完成(例如CMakeLists.txt)

相关问题