如何读写结构向量到文件
How to read and write a vector of struct to a file?
我当前正在尝试读取并写入构造向量到二进制文件,以至于我不花在预处理上,以始终填充它。
我似乎遇到了一些问题...尽管我可以std::ofstream
,但事实并非如此。
#include <iostream>
#include <cstdlib>
#include <vector>
#include <fstream>
struct element
{
std::vector<std::pair<int, int>> coord;
element(std::vector<std::pair<int, int>> set_coord )
{
coord = set_coord;
}
};
int main()
{
std::cout << "Hello, Wandbox!" << std::endl;
std::vector<element> matrix;
std::ofstream datafile;
datafile.open("path/to/file");
datafile<<matrix;
datafile.close();
}
https://wandbox.org/permlink/churchoetdh7ve3xle
我收到一条错误消息,即operator<<
在这里无效...为什么?
如果要直接使用流操作员,则必须为结构超载。这样的东西:
#include <iostream>
#include <vector>
struct MyStruct {
using coordinates = std::vector<std::pair<int, int>>;
MyStruct(coordinates c) : c(c) {};
friend std::ostream& operator<<(std::ostream& os, const MyStruct& m) {
for (const auto &pair : m.c) {
os << "First: " << pair.first << "; Second: " << pair.second;
}
return os;
}
private:
coordinates c;
};
class MyVector {
public:
MyVector(std::initializer_list<MyStruct> list) : elements(list) {}
friend std::ostream& operator<<(std::ostream& os, const MyVector& m) {
for (const auto &ms : m.elements) {
os << ms << std::endl;
}
return os;
}
private:
std::vector<MyStruct> elements;
};
int main()
{
MyStruct m1({{1, 2}});
MyStruct m2({{3, 4}});
MyVector vec({m1, m2});
std::cout << vec << std::endl;
return 0;
}
我已经编辑了代码,因此它确实可以与向量作为成员使用。在第二个编辑中,我使用自己的(非常基本的)向量实现
这是wandbox上的代码
相关文章:
- 将结构向量排序为子组
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 如何在 c++ 中创建结构向量的映射
- 带unique_ptr的结构向量
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 将信息输入到下面显示的结构向量中的正确语法/格式是什么
- C++对结构向量进行排序
- 在C++中对结构向量进行排序时出现问题
- 将结构向量保存到文件中,并从C++文件中读取结构向量
- 搜索并替换结构向量中的值
- 在结构向量中查找最接近的值
- 清除结构向量时会发生什么?
- 如何从 node-ffi 调用 c++ 中以结构向量作为参数的方法?
- 对结构向量进行两次排序
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 如何二进制搜索结构向量并在适当的索引处插入
- 结构向量中自定义结构函数的内存使用
- C++11-在结构向量中修改结构的成员
- 我正在尝试找到一个特定的结构成员,该成员是使用 lambda 函数的结构向量
- 在结构向量中搜索一个数据成员,然后打印匹配的所有数据成员