From 99e2e923d0c77b02f3fb4ff648ea916954868606 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Fri, 28 Feb 2025 23:13:39 +0800 Subject: chore(store): move everything to store. --- store/works/life/cpp-practicum/Book.cpp | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 store/works/life/cpp-practicum/Book.cpp (limited to 'store/works/life/cpp-practicum/Book.cpp') 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 + +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; +} -- cgit v1.2.3