如何通过文件流操作,将txt文档的内容转换成二进制文件,然后再读取这个二进制文件,将其转换回正常的txt文档?
如txt文档 文件1 内容为:
第一行!
第二行!
第三行!
…
需要将文档内容转换输出成二进制文件 文件2;
然后又能对该二进制文件 文件2 进行读取,
再转换为字符串正常显示,输出 文件3.


像这样的效果
如何通过文件流操作,将txt文档的内容转换成二进制文件,然后再读取这个二进制文件,将其转换回正常的txt文档?
如txt文档 文件1 内容为:
第一行!
第二行!
第三行!
…
需要将文档内容转换输出成二进制文件 文件2;
然后又能对该二进制文件 文件2 进行读取,
再转换为字符串正常显示,输出 文件3.


代码:
#include <iostream>
#include <fstream>
#include <vector>
int main() {
// 步骤1: 从文本文件中读取数据
std::ifstream input("文件1.txt"); // 请确保文件路径正确
if (!input) {
std::cerr << "无法打开输入文件\n";
return 1;
}
// 读取文件到string
std::string content((std::istreambuf_iterator<char>(input)),
(std::istreambuf_iterator<char>()));
input.close();
// 步骤2: 将数据以二进制形式写入新文件
std::ofstream output("文件2.bin", std::ios::out | std::ios::binary); // 二进制文件
if (!output) {
std::cerr << "无法打开输出文件\n";
return 1;
}
// 写入数据
output.write(content.c_str(), content.size());
output.close();
// 步骤3: 从二进制文件中读取数据
std::ifstream binaryInput("文件2.bin", std::ios::in | std::ios::binary);
if (!binaryInput) {
std::cerr << "无法打开二进制文件\n";
return 1;
}
// 读取整个文件
std::vector<char> buffer(std::istreambuf_iterator<char>(binaryInput), {});
binaryInput.close();
// 步骤4: 将数据写回文本文件
std::ofstream textOutput("文件3.txt"); // 输出的文本文件
if (!textOutput) {
std::cerr << "无法打开最终的文本文件\n";
return 1;
}
// 写数据到txt文件
textOutput.write(buffer.data(), buffer.size());
textOutput.close();
std::cout << "转换完成\n";
return 0;
}
先读取原始的文本文件,然后将其内容写入一个新的二进制文件,再从该二进制文件读取数据,并最终将这些数据写回一个新的文本文件。这样,你就可以看到最初的文本内容被成功地从原始的文本文件转移到了新的文本文件,经过了一个二进制文件的中转。