使用libzip从.zip获取文件(文本除外)
Get files (other than text) from .zip with libzip
我正在学习C++,并决定通过制作一个小程序来训练我,该程序可以使用libzip库从zip中提取文件,如文本文件、图像,甚至其他zip文件(但我不想直接提取它们,一次提取一件事)。所以我制作了我的程序,但现在我遇到了一个问题。它可以很好地提取文本文件,但不能提取图像或zip等文件。它检测它们,给我确切的名称和大小,但一旦提取出来,它们只有几个字节。(但它们位于它们应该位于的位置)。
这是我的代码:http://pastie.org/6221955
所以,如果有人能帮我从zip中提取不是文本的文件,那就太好了!非常感谢。
您正在以文本字符串的形式读取和写入二进制数据。问题是字符串使用NULL字符(0字节)来表示字符串的末尾。二进制数据可以(而且肯定会)到处都包含零,而不仅仅是在末尾。
您需要使用ofstream
的.write (buffer, <size in bytes>)
来写入磁盘;通过手动指定以字节为单位的大小,可以强制它读取那么多字节,而不是在NULL字符的第一个实例处停止。
问题在于<lt;操作人员您输出一个字符数组/字符串。C中的字符串以null结尾。因此,第一个二进制0将终止您的输出。
相关文章:
- 文本文件中的单词链表
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何在c++中从文本文件中逐行读取整数
- 从文本文件中读取时钟时间和事件时间并进行处理
- 如何从文本文件中读取值和数组
- 如何在C++中确定文本文件中的元素是字符还是数字
- C++试图读取一个文件并输出到另一个文本文件
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 已修改的LinkedList未在文本文件本身中更新
- C++文本文件的获取线
- 为什么C++的文件 I/O 在读取文本文件时忽略初始空行?我怎样才能让它不这样做?
- 打印逐行存储的文本文件
- C++文本文件输入