class Time {//时间类 protected: int year; int month; int day; public: Time(int y, int m, int d) : year(y), month(m), day(d) {} friend ostream& operator<<(ostream& os, const Time& t); }; ostream& operator<<(ostream& os, const Time& t) { os << t.year << "-" << t.month << "-" << t.day; return os; } class Book {//书籍类 private: string name; string author; string publisher; int pages; Time latestTime; int stock; double price; public: Book(string n, string a, string p, int pg, Time lt, int s, double pr) : name(n), author(a), publisher(p), pages(pg), latestTime(lt), stock(s), price(pr) {} 将该类的数据进行文件的进行读取和保存数据,用c++list容器写
时间: 2024-01-17 08:05:15 浏览: 61
好的,我可以为您提供一个基于C++的文件读写和list容器的示例代码。以下是您可以参考的代码:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <list>
using namespace std;
class Time {//时间类
protected:
int year;
int month;
int day;
public:
Time(int y, int m, int d) : year(y), month(m), day(d) {}
friend ostream& operator<<(ostream& os, const Time& t);
};
ostream& operator<<(ostream& os, const Time& t) {
os << t.year << "-" << t.month << "-" << t.day;
return os;
}
class Book {//书籍类
private:
string name;
string author;
string publisher;
int pages;
Time latestTime;
int stock;
double price;
public:
Book(string n, string a, string p, int pg, Time lt, int s, double pr) :
name(n), author(a), publisher(p), pages(pg), latestTime(lt), stock(s), price(pr) {}
friend ostream& operator<<(ostream& os, const Book& b) {
os << b.name << "\t" << b.author << "\t" << b.publisher << "\t" << b.pages << "\t" << b.latestTime << "\t" << b.stock << "\t" << b.price;
return os;
}
friend istream& operator>>(istream& is, Book& b) {
is >> b.name >> b.author >> b.publisher >> b.pages >> b.latestTime.year >> b.latestTime.month >> b.latestTime.day >> b.stock >> b.price;
return is;
}
};
int main() {
list<Book> bookList; // 创建一个list容器用来存储Book对象
ifstream infile("book.txt"); // 打开文件
if (infile.is_open()) {
Book book("", "", "", 0, Time(0, 0, 0), 0, 0.0);
while (infile >> book) {
bookList.push_back(book); // 读取每一行的数据并将其存储到list容器中
}
infile.close(); // 关闭文件
}
else {
cout << "Unable to open file" << endl;
}
// 在这里您可以对bookList进行一些操作,例如添加、删除、修改等
ofstream outfile("book.txt"); // 打开文件
if (outfile.is_open()) {
for (auto& book : bookList) {
outfile << book << endl; // 将list容器中的数据写入文件
}
outfile.close(); // 关闭文件
}
else {
cout << "Unable to open file" << endl;
}
return 0;
}
```
在这个示例代码中,我们首先创建了一个list容器用来存储Book对象。然后,我们打开文件并读取每一行的数据,将其存储到list容器中。接着,您可以对bookList进行一些操作,例如添加、删除、修改等。最后,我们将list容器中的数据写入文件并关闭文件。
需要注意的是,我们定义了Book类的输入输出运算符`operator>>`和`operator<<`,以便于从文件中读取数据和将数据写入文件。在读取数据时,我们使用`infile >> book`的形式来读取每一行的数据并将其存储到book对象中。在写入数据时,我们使用`outfile << book << endl`的形式将book对象中的数据写入文件并在末尾添加一个换行符。
希望这个示例代码能够帮助到您,如果您有任何问题,请随时向我提问。
阅读全文