首页 > 解决方案 > 为什么流写入文件,文件大小每次增加4k?

问题描述

我使用c ++流将内容写入文件,我发现只有当文件大小达到4k * n时,内容才会写入文件,否则会丢失,谁能解释一下?

请看以下代码:

#include "../order.h"
#include <iostream>
#include <string>

using namespace std;

int main() {
  string s;
  std::ofstream f;
  f.open("test.log", ios::out); //  | ios::app);// | ios::binary);
  while (cin >> s && s != "quit") {
    Order o;
    snprintf(o.contract, sizeof(o.contract), "%s", s.c_str());
    o.Show(f);
  }
  f.close();
}

订单.h

#include <stdio.h>
#include <sys/time.h>
#include <fstream>
struct Order {
  timeval shot_time;
  timeval send_time;
  char contract[MAX_CONTRACT_LENGTH];
  double price;
  int size;
  int traded_size;
  OrderSide::Enum side;
  char order_ref[MAX_ORDERREF_SIZE];
  OrderAction::Enum action;
  OrderStatus::Enum status;
  Offset::Enum offset;
  char tbd[128];

  Order()
    : size(0),
      traded_size(0),
      offset(Offset::UNINITED) {
    snprintf(tbd, sizeof(tbd), "%s", "null");
  }

  void Show(std::ofstream &stream) const {
    stream.write((char*)this, sizeof(*this));
  }
}

当我循环到 cin 时,仅当内容为 4k*n 时才添加文件大小,如何避免消息丢失?

标签: c++stlstream

解决方案


推荐阅读