如何在c ++中输入和输出各种文件类型

时间:2015-12-13 21:09:30

标签: c++ io file-type

我已经看过很多带文本文件的i / o示例我只是想知道你是否可以对其他文件类型做同样的事情,比如mp3' s,jpg' s, zip文件等..?

iostream和fstream会为所有这些工作吗?还是我需要另一个库?我需要一个新的SDP吗?

它是所有二进制数据,所以我认为它会那么简单。但我之前一直不高兴。

我可以将所有文件转换为文本还是二进制文件?

4 个答案:

答案 0 :(得分:2)

取决于你的意思" work"

您可以将这些文件视为一本用希腊语编写的书

如果你想搞乱二进制表示(在希腊屏幕上显示文字)那么是的,你可以这样做。

如果你想真正提取一些信息:编辑视频流,从音频中删除语音(实际上理解所写内容),那么你需要自己解析文件格式(学习希腊语)或使用一些专门的图书馆(聘请翻译)。

无论哪种方式,文件流都适合实际访问这些文件数据(许多库确实在引擎盖下使用它们)

答案 1 :(得分:0)

您可以使用fstream打开这些文件,但需要注意的重要一点是,您必须错误地了解文件中包含的内容才能进行处理。

如果你只是想打开它并吐出垃圾,那么你绝对可以从文件的第一行开始,并将所有数据全部推送到你的控制台。

如果您知道文件内部的内容,那么您可以像处理任何其他文件一样处理它。

可能有特定的库用于处理特定文件,但fstream库允许您访问任何您想要的文件。

答案 2 :(得分:0)

所有文件都只是字节。没有什么能阻止你阅读/写下那些你认为合适的字节。

诀窍是用这些字节做有用的。例如,您可以从.jpg文件中读取字节,但您必须知道这些字节的含义以及complicated。通常最好使用知道相关格式的人编写的库,并让他们处理这种复杂性。

答案 3 :(得分:0)

您可以通过使用openmode binary打开二进制流来处理二进制流:

ifstream ifs("mydata.mp3", ios_base::binary); 

然后你读写任何二进制内容。但是,如果您需要生成或修改此类内容,播放视频或显示piture,则需要了解所使用格式的内部详细信息。这可能非常复杂,因此建议使用图书馆。即使有图书馆,也需要高级编程技能。

开源库的示例:ffmpeg用于通常的音频/视频格式,portaudio用于音频,CImg用于图像处理(在C ++中),libpng用于png图形格式,jpeg为lipjpeg。请注意,大多数库提供C api。

某些操作系统还支持某些本机文件类型(例如windows bitmaps)。