【问题标题】:writing binary data (std::string) to an std::ofstream?将二进制数据(std::string)写入 std::ofstream?
【发布时间】:2011-03-18 16:44:35
【问题描述】:

我有一个 std::string 对象,其中包含我需要写入文件的二进制数据。 ofstream f("name"); f << s; 会不会有任何问题?我需要完全按照原来的方式读回数据。

我当然可以使用fwrite(s.c_str(), s.size(), 1, filep),这两种方法有什么优缺点吗?

【问题讨论】:

  • 虽然你正在做的事情是完全有效的(不要忘记以二进制模式打开ofstream。坦率地说,无论你的数据是否是二进制)我会使用vector<char>为了增加感觉良好的因素。你有什么理由不这样做?
  • @Tomalak:我正在使用一组接受和返回string 的转换器类。 string 似乎是一个用于操作缓冲区的便捷接口,例如附加/替换到另一个内容等。我虽然有一次将binaryString 定义为basic_string<unsigned char>,但它需要太多时间来进行重构,而我没有当时。但是我可以将<< 运算符与vector<char> 一起使用吗?
  • 不。但是话又说回来,无论如何我都不想将<< 用于二进制数据,因为我的大脑将其读取为“格式化输出”,这不是您正在做的事情。同样,它是完全有效的,但我不会那样混淆我的大脑。 :) 不过,本机附加当然很有用。
  • @TomalakGeret'kal 等。 al...我可以提请您注意这个相关问题吗:stackoverflow.com/questions/8230786/…

标签: c++ binary iostream


【解决方案1】:

只要打开ofstream进行二进制访问就可以了。

ofstream f("name", ios::binary | ios::out); 
f << s;

在读回数据时也不要忘记以二进制模式打开文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-14
    • 2021-10-30
    • 2015-02-15
    • 2010-10-18
    • 2015-11-27
    • 1970-01-01
    • 2010-10-18
    相关资源
    最近更新 更多