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

C++ 如何在c+;中输入和输出各种文件类型+;,c++,io,file-type,C++,Io,File Type,我看过很多关于文本文件I/o的例子,我只是想知道你是否可以对其他文件类型,如mp3、jpg、zip文件等做同样的事情 iostream和fstream是否适用于所有这些功能,还是我需要另一个库?我需要一个新的sdk吗 这都是二进制数据,所以我认为它会这么简单。但我以前曾感到不愉快的惊讶 我可以将所有文件转换为文本或二进制文件吗?您可以使用fstream打开这些文件,但需要注意的是,为了处理文件,您必须非常清楚文件中包含的内容 如果您只想打开它并吐出垃圾,那么您完全可以从文件的第一行开始,将所有数

我看过很多关于文本文件I/o的例子,我只是想知道你是否可以对其他文件类型,如mp3、jpg、zip文件等做同样的事情

iostream和fstream是否适用于所有这些功能,还是我需要另一个库?我需要一个新的sdk吗

这都是二进制数据,所以我认为它会这么简单。但我以前曾感到不愉快的惊讶


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

您可以使用fstream打开这些文件,但需要注意的是,为了处理文件,您必须非常清楚文件中包含的内容

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

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


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

这取决于您所说的“工作”是什么意思

你可以把这些文件想象成一本用希腊语写的书

若你们想搞乱二进制表示法(在屏幕上用希腊文显示文本),那个么是的,你们可以这样做

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


无论哪种方式,filestreams都适合于实际访问这些文件数据(许多库都在幕后使用它们)

所有文件都只是字节。没有任何东西可以阻止您以您认为合适的方式读取/写入这些字节


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

您可以使用openmode打开二进制流:

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

开源库的示例:常用音频/视频格式、音频、图像处理(C++)、png图形格式、jpeg。注意,大多数库都提供C api


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

这些专用库是标准c库的一部分吗?它们是否包含在visual studio 2010中。@Mindril,不,它们不是。您需要下载它们并设置所需的文件类型。有一些建议在C++标准中使用某些文件类型来添加库,但我怀疑它们中的任何一个都会在2020年之前找到标准,所以基本上我可以访问所有的位,但我必须知道哪些位可以做什么。非常有用的命令。谢谢你。现在,如果我必须下载所有这些库,那么将它们导入Visual Studio 2010是否很容易?只下载特定程序所需的内容,如果您不打算使用音频,为什么要导入到VS
portaudio
?关于您的第二个查询,如果您遵循每个项目的安装文档,您应该立即使用它们与VS。。。请记住,您还需要学习如何使用它们这些都是以源代码格式提供的跨平台库。其中一些有关于如何使用VS2010构建它们的说明。其中一些是使用NMAKE的构建脚本(但是假设NMAKE在路径文件中并且环境变量设置正确)。它并不总是一块蛋糕;-)我确认:选择ffmpeg或portaudio。浏览dos,看看你觉得哪一个最容易使用。对于CImg来说,它是其他几个库的前端,所以您可能需要所有这些库。看起来你们都在同一页上。我需要进一步阅读。既然我已经问了所有我能想到的关于atm的好问题,我会问一个愚蠢的问题:P(也许)如果我将一个文件输入到我的编译器中,并以十几种方式对其进行置乱,然后将其更改回原样,或者什么也不做,然后将其吐出,那么该文件是相同的,具有相同的行为,还是以某种方式自动更改。我猜不会,但肯定没关系。字节就是字节。混乱和解读它们并不能改变它们。这正是像压缩和加密这样的事情所做的。
ifstream ifs("mydata.mp3", ios_base::binary);