【问题标题】:Copy and archive/compress text files using C++使用 C++ 复制和存档/压缩文本文件
【发布时间】: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


【解决方案1】:

没有用于执行此操作的 C++ 标准库元素。您必须使用特殊库、使用外部应用程序或开发自己的文本压缩器。

我猜你最接近使用“标准”库的是使用 Boost 库。刚找到this question,觉得Boost可能支持gzip。

【讨论】:

    【解决方案2】:

    使用libtar,一个tar 文件操作器。

    【讨论】:

      猜你喜欢
      • 2019-04-14
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      相关资源
      最近更新 更多