Rewriting this simple function using c++ STL/Boost instead of system() calls?
我需要将*.cpp文件归档到gzip tarball中的特定目录中。我需要在运行时发生这种情况,作为精确记录哪些代码(例如哪些版本的源代码文件)从程序中生成特定结果集的一种方法。
所以,我编写了以下函数。它通常工作得很好,但在过去它曾出过一两次差错。我想不起来到底发生了什么,但我记得这是由于使用EDCOX1第0条而不是在C++程序中实际进行文件删除和归档。
1 2 3 4 5 6 7 | void saveSourceCode_TarGZ(string destinationFile) { system( ("rm -f" + destinationFile).c_str() ); system( ("rm -f" + destinationFile +".gz").c_str() ); system( ("tar -cvf" + destinationFile +" ./*.cpp").c_str() ); system( ("gzip" + destinationFile).c_str() ); } |
上面函数中的前两行只需删除与我试图创建的存档(
如何使用stl或boost库重写此函数?
在使用Boost库时,我非常缺乏经验,当我在C++中使用文件系统管理时,我是一个完全无知的人。
STL中没有压缩和解压缩文件的功能(根据某些压缩方案)。
也就是说,有一个叫lz4(link)的小图书馆,可以满足你的需求。从
1 2 3 4 5 6 | //**************************** // Simple Functions //**************************** int LZ4_compress (const char* source, char* dest, int inputSize); int LZ4_decompress_safe (const char* source, char* dest, int inputSize, int maxOutputSize); |
如果您可以使用boost::iostreams,即boost::iostreams::gzip,那么还有内置的gzip功能。