【问题标题】:Write int in one line to std::ofstream::write()在一行中将 int 写入 std::ofstream::write()
【发布时间】:2015-10-31 20:18:15
【问题描述】:

我想将二进制文件写入文件。

我正在查看函数 std::ofstream::write()。

它需要一个指针以及要写入的字节数。无论如何我可以做一些简单的事情,比如

ofstream.write(36);

而不是像...那样在两行中完成它

int out = 36; ofstream.write((char*)&out , 4);

【问题讨论】:

  • 不,没有这样的方法。

标签: c++


【解决方案1】:

由于write 使用指针,您需要提供地址。一个简单的方法是写一个辅助函数,像这样:

inline void write(ostream& o, int n) {
    o.write(&n, sizeof(int));
}

现在你可以在一行中完成:

int foo() {
    ofstream ofs("aaa");
    write(ofs, 36);
    write(ofs, 42);
}

【讨论】:

  • OP 想要在一行中完成,而不是添加额外的行:P
  • @LightnessRacesinOrbit 好吧,如果不创建变量,就无法从文字中创建地址,因此这可能与单线一样接近。
  • 就在这周,我写了同样的函数(模板):),虽然我不得不转换为 char*。对我来说,保持代码更干净就足够了。请注意,int 很难预测流中使用的字节数。
【解决方案2】:

不,没有办法。​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 2018-07-26
    • 2012-04-27
    • 2011-05-18
    相关资源
    最近更新 更多