c++ - 为什么流写入文件,文件大小每次增加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 时才添加文件大小,如何避免消息丢失?
解决方案
推荐阅读
- android - 将两个数据类绑定到一个片段 - Android Kotlin
- algorithm - 查找 XOR 和为零的数组数量
- google-bigquery - 特殊组成员时的 BigQuery 数据集访问
- mongodb - mongo db 没有在 centos 7 上启动
- python - 是否有计算项目产品价值的循环?
- ios - Vapor 3.1.10 Xcode-11.3.1 编译问题
- javascript - 禁用除 IE 之外的所有浏览器的 HTML5 AppCache
- c - 如何从一个数组中找到每个分支的百分比?在 C 中(已回答)
- zk - 如何在 zk-calendar 中将任何日/周/月设置为默认视图?
- python - 迁移错误“OperationalError at /admin/accounts/userstripe/ no such table:accounts_userstripe”