(c++)将任意文件读取为二进制文件,并将数据作为单独的文本文件输出
(C++) read an arbirtrary file as binary and output the data as a separate text file
我试图采取任意文件并将其读取为原始二进制文件,然后将数据输出为单独的文本文件。不能对输入文件的格式或编码做任何假设。我所做的大致如下:
char *pDataBlock = new char[nLength];
ifstream InputFile("MyInputFile.txt", ios::in | ios::binary);
ofstream OutputFile("MyOutputFile.txt");
while (InputFile)
{
InputFile.read(pDataBlock, nLength);
OutputFile.write(pDataBlock, nLength);
}
目前的问题:这段代码以二进制模式打开MyInputFile.txt,但是每次读取一个字符(字节!)到一个名为pDataBlock的c字符串中。然后将这个c字符串一次一个字节地写入MyOutputFile.txt。
糟糕的解决方案:我现在的解决方案是将以下步骤插入到上述代码中:(1)读取InputFile的单个字符,(2)将该字符转换为整数,(3)将该整数转换为二进制字符串,(4)以追加模式将该二进制字符串输出到OutputFile,(5)读取下一个字符直到EOF。
问题似乎是我发现与fstream相关的每个读/写命令都涉及一次取一个字节,并且不允许位级操作。
你是对的,流不能以低于一个字节的粒度进行操作。你现在的解决方案并没有那么糟糕。您可以通过一次读取多个字节来改进它,但是没有办法一次从文件流中读取一个位。
相关文章:
- 从 bmp 文件数据创建 MFC CBitmap
- 从存储为 Windows 资源 (c++) 的 png 中获取 png 文件数据
- 如何在 Gnuplot 中分别绘制 2 个文件数据?我有一个文件"sin.txt",另一个文件"cos.txt",我想将它们分别绘制在一个图表上
- 获取文件数据预处理器宏
- 错误的值是使用c++从CSV文件数据写入数组
- 无法在可视C++中检索资源文件数据
- 将文本文件数据读入字符数组时提取运算符的歧义
- 如何使用curl c ++源代码发布wav文件数据,如何使用c ++使用--data-binary?
- 如何在C++中读取 UTF-8 文件数据
- 如何在结构中存储二进制文件数据
- 无法从 turbo c 程序中的文件检索文件数据
- 使用 fstream 将文件数据从当前位置保存到文件末尾
- 通过Google Protobuf发送二进制文件数据
- 在通过套接字向服务器发送文件数据时,我得到了一些垃圾值?为什么
- 如何使用dlang读取二进制文件数据
- 程序使用FSCANF读取文件数据后崩溃
- 检测二进制文件数据的端性
- C++ 从文本文件数据类型读取为结构,并将数据存储在列表的向量中
- 将 FFT 应用于 WAV 文件数据的 C++
- C++内存映射的文件数据预取