2017-02-10 138 views
0
if(cmd == "zip") 
     { 
      string z = "tar cvf " + destination + " " + file; 
      system(z.c_str()); 
     } 

我想壓縮一個文件。到一個給定的目的地。但是我的情況發生了什麼,它是一個壓縮文件的目的地。就像我在Linux中使用它,在Destination中給出「Desktop」,並在文件中給出文件名。所以它只在桌面上使桌面壓縮文件沒有擴展名。用C++編譯tar文件壓縮存檔文件

+1

主要與C++無關。 –

回答

3

你可以這樣做:

string z = "tar cvzf " + destination + "/" + file + ".tar.gz " + file; 

(變量,如果不受信任的,應進行消毒,牢記system()調用POSIX殼)

沒有 「Z」,tar創建一個.tar文件,但是你必須自己指定文件名和擴展名 - 它不是自動的。

隨着「Z」,它會創建一個.tar.gz文件(這是一個不同於zip文件共同tar不做zip文件)。

還有其他的選擇。 有關更多詳細信息,請參閱tar(1)


BTW,到system函數的調用在技術上是不是system call

+1

Upvote,但我真的沒有看到在參數列表中使用'v'的理由,但是;-) – cfromme

+0

@cfromme謝謝。 v從OP複製。 – PSkocik