std::vector<std::string>&& get_cmp_files(const std::string& dir) {
std::vector<std::string> res;
DIR* dp;
struct dirent* dirp;
if ((dp = opendir(dir.c_str())) == nullptr) {
printf("打开文件夹失败: %s, %s\n", dir.c_str(), strerror(errno));
exit(-1);
}
while ((dirp = readdir(dp)) != nullptr) {
if (dirp->d_type == DT_REG) {
res.emplace_back(dirp->d_name);
}
}
closedir(dp);
return std::move(res);
}
int main(int argc, char* argv[]) {
// std::string input_file;
// if (argc != 2) {
// printf("Usage: %s <input_file>\n", argv[0]);
// return -1;
// } else {
// input_file = argv[1];
// }
// Unpack upk;
// if (upk.unpack(input_file) != 0) {
// printf("解包文件失败, %s, 请查看日志\n", input_file.c_str());
// return -1;
// }
// 遍历cfile文件夹下的所有压缩文件, 拿到文件名
auto v = get_cmp_files("cmp");
if (v.size() > 0) {
Decompress dcp;
chdir("cmp"); // 将工作目录变更到cmp文件夹下, 方便后续处理
for (const auto& cmp_file : v) {
printf("开始解压缩文件, %s\n", cmp_file.c_str());
dcp.decode(cmp_file);
printf("解压缩文件结束, %s\n", cmp_file.c_str());
}
} else {
printf("此次下传中不包含图像压缩文件, 略过解压步骤\n");
}
printf("处理结束, GoodBye~~\n");
return 0;
}
RT, get_cmp_files函数的return std::move(res);一执行就崩溃...不明白为啥, 只是简单的不想vector值复制而已...难道我的右值引用和移动语义有问题? 用的gcc 9.4编译的
--
FROM 106.120.11.*