如果您在关闭文件之前使用 seekp 来移动文件指针,并且确保在文件关闭之前执行了数据写入操作,那么指针位置应该正确的
#include <iostream>
#include <fstream>
#include <nlohmann/json.hpp>
int main() {
// 文件路径
std::string filename = "your_file_path.txt";
// 创建文件流对象
std::ofstream file(filename, std::ofstream::app | std::ofstream::binary);
if (!file.is_open()) {
std::cout << "Unable to open file!" << std::endl;
return 1;
}
// 写入内容
file << "Hello, World!\n";
// 定位到文件开头并获取文件大小
file.seekp(0, std::ios::end);
std::streampos fileSize = file.tellp();
// 转换文件大小为字符串
std::string fileSizeStr = std::to_string(fileSize);
// 创建 JSON 对象并添加文件大小
nlohmann::json json_tmp;
json_tmp["fileSize"] = fileSizeStr;
// 输出 JSON 对象内容
std::cout << json_tmp.dump() << std::endl;
file.close();
return 0;
}