繁体   English   中英

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

[英]How do I input and output various file types in c++

我已经看到了很多文本文件输入/输出的示例,我只是想知道您是否可以对其他文件类型(例如mp3,jpg,zip文件等)执行相同的操作?

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

所有这些都是二进制数据,所以我认为它就是这么简单。 但是我之前一直很不高兴。

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

这取决于您所说的“工作”

您可以将这些文件想像成用希腊语写的书

如果您只是想搞乱二进制表示形式( 在屏幕上以希腊语显示文本 ),那么可以的。

如果您想实际提取一些信息:编辑视频流,从音频中删除语音( 实际上了解所写内容 ),那么您将需要自己解析文件格式( 学习希腊语 )或使用一些专门的库( 雇用翻译员 )。

无论哪种方式,文件流都适合实际访问那些文件数据(许多库确实在后台使用它们)

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

如果您只想打开它并吐出垃圾,那么绝对可以从文件的第一行开始,然后将所有数据详尽地推送到控制台中。

如果您知道文件的内部外观,则可以像处理其他任何文件一样对其进行处理。

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

所有文件都是字节。 没有什么阻止您读取/写入这些字节的,但是您认为合适。

技巧是对这些字节做一些有用的事情。 例如,您可以从.jpg文件中读取字节,但是您必须知道这些字节的含义,这很复杂 通常,最好使用由了解相关格式的人员编写的库,并让他们处理这种复杂性。

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

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

然后,您读写所有二进制内容。 但是,如果您需要生成或修改此类内容,播放视频或显示图片,则需要了解所使用格式的内部细节。 这可能极其复杂,因此将建议使用库。 即使具有库,也需要高级编程技能。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM