【发布时间】:2014-10-10 02:36:07
【问题描述】:
我的任务很简单。每当我运行我的 C++ 程序时
$ ./myprogram
我想在 CWD 中搜索所有源 (*.cpp) 文件,然后将它们复制到目录./output 中,然后创建某种压缩存档文件。我不在乎什么类型的压缩或归档格式,只要将它们放在一个文件中即可。
目前,我正在使用以下功能:
int archiveFiles(string destinationFile) {
int ret;
ret = system( ("tar -cf " + destinationFile + " ./*.cpp").c_str() );
ret = system( ("gzip " + destinationFile).c_str() );
return ret;
}
拨打archiveFiles("output");
但我宁愿不使用系统调用。我宁愿在myprogram 本身中进行复制/存档/压缩。如果可能的话,我也不喜欢使用特殊的库。
无论如何只用标准库元素来做到这一点?
【问题讨论】:
-
至少你必须使用
zlib或类似的方法来创建存档 -
不,没有支持这些压缩功能的 c++ 标准机制。您可以查看lzma 或支持文件压缩机制的类似库。
-
所以如果我可以总结一下:“是的,我知道其他人使用的那些圆形轮子,但我还是要发明一些新的三角形轮子!”这能掩盖它吗?
-
@JerryCoffin 我不想重新发明任何轮子——至少,我不是故意的。您是说
system(...)的做法实际上完全没问题吗?如果是这样,那我很乐意坚持下去。 -
我是说“特殊库”是正确的方法,执行外部程序次之,发明自己的distant第三。
标签: c++ compression filestream archive