我想有效地读取 xz 文件,所以我认为 uncompress 不是一个好的选择。
有什么方法可以用来读取 xzfile 而无需在 C++ 中解压缩?
我知道 zlib 是读取 gz 文件的好工具,但它不能用于 xz 文件。
我发现我可以 vim xz 文件,它显示得很好。但是当我使用 cpp ifstream getline 时,它会出现混乱代码。谁能解释一下?
压缩是将一个字节序列转换为另一个字节序列的可逆过程,希望更短1。减压是该过程的逆过程。所以当然,如果你有一个已经压缩的字节序列,那么你必须解压缩它才能恢复内容。没有办法绕过它,因此性能损失是不可避免的。所以答案
有什么方法可以用来读取 xzfile 而无需在 C++ 中解压缩?
简直是“不”。C++ 与否,无所谓。
至于
我发现我可以 vim xz 文件,它显示得很好。
是的,因为 vim 会在后台为您解压缩文件(可能在内存中)。它只是没有告诉你。
1 个有趣的事实:数学告诉我们,对于每个压缩算法,都存在一个输入,因此该算法实际上会产生更大的输出。压缩算法基于这样一个事实,即我们压缩的内容内部有一些很好的模式,例如单词。这也是为什么多次应用压缩不起作用(并且永远不会)起作用的原因。
xz
不是文本文件,它包含字节,而不是字符,因此您不能在其上使用标准输入流,而您只剩下fread
. 但是,xz
它是开源的,因此如果您的工具也是开源的,您可以获取他们的代码并根据您的需要进行调整。