diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-02-28 23:13:39 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-02-28 23:13:39 +0800 |
commit | dc1f0c4c0096013799416664894c5194dc7e1f52 (patch) | |
tree | 2f5d235f778cd720f4c39ec3e56b77ba6d99f375 /store/works/life/cpp-practicum/Book.cpp | |
parent | 7299d424d90b1effb6db69e3476ddd5af72eeba4 (diff) | |
download | crupest-dc1f0c4c0096013799416664894c5194dc7e1f52.tar.gz crupest-dc1f0c4c0096013799416664894c5194dc7e1f52.tar.bz2 crupest-dc1f0c4c0096013799416664894c5194dc7e1f52.zip |
chore(store): move everything to store.
Diffstat (limited to 'store/works/life/cpp-practicum/Book.cpp')
-rw-r--r-- | store/works/life/cpp-practicum/Book.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/store/works/life/cpp-practicum/Book.cpp b/store/works/life/cpp-practicum/Book.cpp new file mode 100644 index 0000000..bf67d7c --- /dev/null +++ b/store/works/life/cpp-practicum/Book.cpp @@ -0,0 +1,36 @@ +#include "Book.hpp"
+
+#include <QString>
+
+QTextStream &operator>>(QTextStream &left, Book &right) {
+ auto line = left.readLine();
+
+ auto fields = line.split(QChar('|'));
+
+ if (fields.size() != 6) {
+ throw SerializationException("The line has not 6 parts.");
+ }
+
+ right.SetIsbn(fields[0].toStdU16String());
+ right.SetTitle(fields[1].toStdU16String());
+ right.SetType(fields[2].toStdU16String());
+ right.SetAuthor(fields[3].toStdU16String());
+ right.SetPress(fields[4].toStdU16String());
+
+ bool ok;
+ auto stock_count = fields[5].toInt(&ok);
+ if (!ok) {
+ throw SerializationException("Part 6 is not a number.");
+ }
+
+ right.SetStockCount(stock_count);
+
+ return left;
+}
+
+QTextStream &operator<<(QTextStream &left, const Book &right) {
+ left << right.GetIsbn() << '|' << right.GetTitle() << '|' << right.GetType()
+ << '|' << right.GetAuthor() << '|' << right.GetPress() << '|'
+ << right.GetStockCount();
+ return left;
+}
|