Azrail_LDL 2023-10-17 15:20 采纳率: 75%
浏览 84
已结题

c++中,如何将文本文件通过string转换成二进制文件?

如何通过文件流操作,将txt文档的内容转换成二进制文件,然后再读取这个二进制文件,将其转换回正常的txt文档?
如txt文档 文件1 内容为:
第一行!
第二行!
第三行!

需要将文档内容转换输出成二进制文件 文件2;
然后又能对该二进制文件 文件2 进行读取,
再转换为字符串正常显示,输出 文件3.

img

img


像这样的效果

  • 写回答

10条回答 默认 最新

  • 社区专家-Monster-XH 2023-10-17 15:26
    关注

    基于Monster 组和GPT的调写:

    • 用文件I/O(输入/输出)操作来实现这个任务。先用std::ifstream来从文本文件读取数据,然后用std::ofstream以二进制模式写入到一个新的文件。随后,再用std::ifstream以二进制方式读取该文件,并用std::ofstream将其写回为文本文件。

    代码:

    #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;
    }
    
    
    

    先读取原始的文本文件,然后将其内容写入一个新的二进制文件,再从该二进制文件读取数据,并最终将这些数据写回一个新的文本文件。这样,你就可以看到最初的文本内容被成功地从原始的文本文件转移到了新的文本文件,经过了一个二进制文件的中转。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(9条)

报告相同问题?

问题事件

  • 系统已结题 10月25日
  • 已采纳回答 10月17日
  • 修改了问题 10月17日
  • 赞助了问题酬金20元 10月17日
  • 展开全部