c++容器存入文件
时间: 2023-08-06 08:17:45 浏览: 67
将 C++ 容器存入文件可以使用文件流(fstream)来实现。具体步骤如下:
1. 打开一个文件流,以写入模式打开文件。
2. 将容器中的数据写入文件流中。
3. 关闭文件流。
下面是一个示例代码,假设我们要将一个 vector<int> 存入文件中:
```c++
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main() {
vector<int> v{1, 2, 3, 4, 5};
// 打开文件流
ofstream ofs("data.txt");
// 将 vector 中的数据写入文件流
for (auto it = v.begin(); it != v.end(); ++it) {
ofs << *it << endl;
}
// 关闭文件流
ofs.close();
return 0;
}
```
上述代码中,我们使用了 ofstream 来打开文件流,并使用了 << 运算符将 vector 中的数据写入文件流。需要注意的是,我们在每个数据后面加上了一个换行符 endl,这是为了在文件中每个数据占一行,方便读取。
执行上述代码后,会在当前目录下生成一个名为 data.txt 的文件,其中存储了 vector 中的数据。
相关问题
C++文件中数字放入二维容器中
你可以使用 vector 嵌套 vector 的方式来创建一个二维容器,并将数字存入其中。以下是示例代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
// 创建一个二维容器
vector<vector<int>> container;
// 向容器中添加数据
for(int i = 0; i < 3; i++) {
vector<int> row; // 创建一行
for(int j = 0; j < 4; j++) {
row.push_back(i * 4 + j); // 将数字添加到行中
}
container.push_back(row); // 将行添加到容器中
}
// 输出容器中的数据
for(int i = 0; i < container.size(); i++) {
for(int j = 0; j < container[i].size(); j++) {
cout << container[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
上述代码创建了一个 3 行 4 列的二维容器,并将数字从 0 到 11 存入其中。输出结果如下:
```
0 1 2 3
4 5 6 7
8 9 10 11
```
你可以根据自己的需求修改容器的大小和存储的数据类型。
如何把两个属性不同的员工存入到同一文件中c++
你可以使用多态(Polymorphism)的概念来实现这个功能,即使用一个基类来定义共同的属性和方法,然后派生出不同的子类,每个子类有自己独特的属性和方法。最后将这些子类对象存入同一个数组或者容器中,进行统一的操作。
例如,你可以定义一个名为Employee的基类,其中包含了所有员工都具备的共同属性和方法(如姓名、工号、工资等等),然后派生出两个子类,比如Manager和Programmer,每个子类有自己特有的属性和方法(如Manager有管理经验,Programmer有编程技能等等),最后将这些子类对象存入同一个数组或者容器中,进行统一的操作。
以下是一个简单的示例代码:
```
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
class Employee {
public:
string name;
int id;
double salary;
virtual void printInfo() {} // 基类虚函数,用于实现多态
};
class Manager : public Employee {
public:
int experience;
void printInfo() {
cout << "Name: " << name << ", ID: " << id << ", Salary: " << salary << ", Experience: " << experience << endl;
}
};
class Programmer : public Employee {
public:
string language;
void printInfo() {
cout << "Name: " << name << ", ID: " << id << ", Salary: " << salary << ", Language: " << language << endl;
}
};
int main() {
vector<Employee*> employees; // 声明一个指向Employee基类的指针数组
Manager* m1 = new Manager();
m1->name = "Tom";
m1->id = 1001;
m1->salary = 8000;
m1->experience = 5;
employees.push_back(m1); // 将Manager对象指针存入数组中
Programmer* p1 = new Programmer();
p1->name = "Jerry";
p1->id = 2001;
p1->salary = 6000;
p1->language = "C++";
employees.push_back(p1); // 将Programmer对象指针存入数组中
// 遍历数组,调用多态函数printInfo()
for (int i = 0; i < employees.size(); i++) {
employees[i]->printInfo();
}
// 释放内存
for (int i = 0; i < employees.size(); i++) {
delete employees[i];
}
return 0;
}
```
在上述示例代码中,我们使用了vector容器来存储Employee基类指针,然后分别创建Manager和Programmer对象,并将它们的指针存入vector中。最后,我们使用多态的方式遍历vector中的对象,并调用它们各自特有的printInfo()方法输出信息。
需要注意的是,在程序结束之前,需要手动释放所有动态分配的内存。在示例代码中,我们使用了for循环和delete关键字来逐个释放每个对象的内存。