gpt4 book ai didi

c++ - 没有 Qt 的 C++ 中的 os.path 等价物?

转载 作者:搜寻专家 更新时间:2023-10-31 00:56:05 24 4
gpt4 key购买 nike

我需要设置一个目录,然后读取里面文件的所有文件名,并将整个路径存储在一个变量中。稍后我需要使用这个变量来打开文件并读取它。我不想为此使用 QDir。我看到了问题的第二个答案 here .我可以使用boost/filesystem.hpp(我相信这个不需要单独下载)。但问题是执行看起来像这样:

$ g++ -o test test.cpp -lboost_filesystem -lboost_system
$ ./test

我的第一行,由于 OpenCV 库,创建可执行对象已经很复杂,我不想添加它。我想让它们保持简单(以下行加上 OpenCV 想要的任何内容):

g++ -o test test.cpp 

有什么办法吗?

这是我要为其编写 C++ 代码的 python 代码:

root_dir = 'abc'
img_dir = os.path.join(root_dir,'subimages')

img_files = os.listdir(img_dir)
for files in img_files:
img_name = os.path.join (img_dir,files)
img = cv2.imread(img_name)

最佳答案

您的选择是使用 boost、QDir、自己动手,或者使用更新的编译器,该编译器采用了为 C++17 准备的一些 TR2 功能。下面是一个示例,它大致应该使用 C++17 功能以系统不可知的方式迭代文件。

#include <filesystem>
namespace fs = std::experimental::filesystem;
...
fs::directory_iterator end_iter;
fs::path subdir = fs::dir("abc") / fs::dir("subimages");
std::vector<std::string> files;

for (fs::directory_iterator dir_iter(subdir); dir_iter != end_iter; dir_iter++) {
if (fs::is_regular_file(dir_iter->status())) {
files.insert(*dir_iter);
}
}

关于c++ - 没有 Qt 的 C++ 中的 os.path 等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40366082/

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