From e0964bbc4f66e7d193abd249213c9cf762fd0294 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 30 Dec 2020 15:37:39 +0800 Subject: import(life): ... --- works/life/cpp-practicum/Book.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 works/life/cpp-practicum/Book.cpp (limited to 'works/life/cpp-practicum/Book.cpp') diff --git a/works/life/cpp-practicum/Book.cpp b/works/life/cpp-practicum/Book.cpp new file mode 100644 index 0000000..bf67d7c --- /dev/null +++ b/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