首页 > 后端开发 > C++ > 正文

c++中如何将vector的内容写入文件_vector数据持久化到文件

穿越時空
发布: 2025-09-21 12:14:01
原创
354人浏览过
C++中vector数据持久化有文本、二进制和序列化三种主要方式:1. 文本文件适合基本类型,读写直观;2. 二进制文件高效紧凑,适用于数值类型,需注意大小端问题;3. JSON等序列化库支持复杂结构,跨平台易读,推荐nlohmann/json处理vector<string>或自定义类型。

c++中如何将vector的内容写入文件_vector数据持久化到文件

在C++中,将

vector
登录后复制
的内容写入文件(即数据持久化)有多种方式,具体取决于你存储的数据类型以及是否需要保留类型信息。下面介绍几种常用且实用的方法。

1. 写入文本文件(适合基本类型)

如果

vector
登录后复制
中存储的是
int
登录后复制
double
登录后复制
string
登录后复制
等可输出类型,可以使用
<fstream>
登录后复制
将其以文本形式写入文件。

示例:将 vector<int> 写入文本文件

#include <fstream>
#include <vector>
#include <iostream>
<p>std::vector<int> data = {1, 2, 3, 4, 5};
std::ofstream file("data.txt");
if (file.is_open()) {
for (const auto& item : data) {
file << item << "\n";
}
file.close();
}
登录后复制

读取时逐行解析即可:

std::vector<int> loaded;
std::ifstream infile("data.txt");
int value;
while (infile >> value) {
    loaded.push_back(value);
}
登录后复制

2. 二进制写入(高效,适合数值类型)

对于

vector<int>
登录后复制
vector<double>
登录后复制
等连续内存的POD类型,可以直接用
write()
登录后复制
方法写入二进制文件,速度快,体积小。

立即学习C++免费学习笔记(深入)”;

示例:vector<double> 二进制写入

std::vector<double> values = {1.1, 2.2, 3.3, 4.4};
std::ofstream file("data.bin", std::ios::binary);
size_t size = values.size();
file.write(reinterpret_cast<const char*>(&size), sizeof(size));
file.write(reinterpret_cast<const char*>(values.data()), values.size() * sizeof(double));
file.close();
登录后复制

读取时按相同格式还原:

巧文书
巧文书

巧文书是一款AI写标书、AI写方案的产品。通过自研的先进AI大模型,精准解析招标文件,智能生成投标内容。

巧文书 61
查看详情 巧文书

std::vector<double> loaded;
std::ifstream infile("data.bin", std::ios::binary);
size_t size;
infile.read(reinterpret_cast<char*>(&size), sizeof(size));
loaded.resize(size);
infile.read(reinterpret_cast<char*>(loaded.data()), size * sizeof(double));
登录后复制

3. 使用序列化库(如 JSON 或 XML)

若需跨平台、易读或存储复杂结构(如

vector<Person>
登录后复制
),推荐使用序列化格式。例如使用 nlohmann/json 库处理 JSON。

示例:用 JSON 存储 vector<string>

#include <nlohmann/json.hpp>
#include <fstream>
<p>std::vector<std::string> names = {"Alice", "Bob", "Charlie"};
nlohmann::json j = names;</p><p>std::ofstream file("names.json");
file << j.dump(4); // 格式化输出
登录后复制

读取也很简单:

std::ifstream infile("names.json");
nlohmann::json j;
infile >> j;
std::vector<std::string> loaded = j.get<std::vector<std::string>>();
登录后复制

4. 自定义结构体的持久化

如果

vector
登录后复制
中是自定义类型,建议重载输入输出操作符或手动序列化字段。

示例:保存 vector<Point>

struct Point {
    double x, y;
};
<p>// 手动序列化为文本
std::ofstream file("points.txt");
for (const auto& p : points) {
file << p.x << " " << p.y << "\n";
}
登录后复制

或扩展 JSON 方法支持结构体(需定义 to_json/from_json 函数)。

基本上就这些。选择哪种方式取决于你的需求:调试用文本,性能用二进制,通用性用JSON。关键是读写格式要一致,注意字节序和类型对齐问题(尤其在跨平台时)。

以上就是c++++中如何将vector的内容写入文件_vector数据持久化到文件的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号