【发布时间】:2013-06-17 00:56:24
【问题描述】:
我是 C++ 的新手,我只是从昨天开始的几个小时的自学。 所以:
我有一个未压缩的简单 beep.wav 文件,只有大约 3 秒长,里面有一个哔哔声。
我最终想要实现的是,只是读取文件,同时写入二进制数据,全部包括:header、ftm和data 或所有十六进制可读数据并将其转储到一个简单的beep.txt 文件中。
在 C++ 中这可能吗?如果是这样,我应该如何开始读取和转储二进制文件?
我可以使用<fstream> 类读取文件~或多或少
#include <iostream>
#include <fstream>
int main()
{
ifstream myfile ("beep.wav", ios::in|ios::binary|ios::ate);
if (myfile.is_open())
{
//reading goes here
}
return 0;
}
【问题讨论】:
-
你想达到什么目的?为什么要将二进制数据写入文本文件?你认为文本文件会有什么二进制数据没有?
-
首先,在功能方面,计算机可以做的所有事情都可以在 C++ 中实现(就像大多数其他通用编程语言一样。)世界运行在 C 和 C++ 上,所以它可以完成.但是,您真正想要做什么完全不清楚。您想将一个文件的内容复制到另一个文件中吗?是否要解析 WAV 标头和 PCM 数据并将它们转换为文本?您甚至知道未压缩(又名 PCM)WAV 文件的结构吗?
-
@xxbbcc 好吧,我正在学习 C++ 来创建一个声音操作工具,并且为了了解它从 0 开始的所有工作原理。我需要学习/实验二进制数据的存储工作原理,以及如何操作它。
-
@yzt 就像上面我说的,我一直在学习声音、音频信号和音频驱动程序,这个主题是我了解其工作原理的方式。所以,我只是想玩它。 . 如果你愿意的话。
-
@bluethief 在这种情况下,您首先需要了解二进制文件和文本文件之间的区别。这些存在是有原因的,一个人不能直接将内容从一个写入另一个而没有后果。您可以读取 WAV 文件的内容,但要以有意义的方式将其写入文本文件,您必须翻译数据。如何做到这一点取决于您想要什么样的文本输出。
标签: c++ c wav binaryfiles fstream