LW3.2 Redefine input/output streams operators.

This commit is contained in:
Kolan Sh 2021-03-28 21:12:20 +03:00
parent 650bd227d4
commit ca3125dbd4
3 changed files with 55 additions and 18 deletions

View File

@ -8,7 +8,7 @@ void CBookItems::CreateNewItem(string sFirstName, string sLastName, string sPhon
void CBookItems::CreateNewItem(string sFirstName, string sLastName, string sPhoneNumber1, string sPhoneNumber2) void CBookItems::CreateNewItem(string sFirstName, string sLastName, string sPhoneNumber1, string sPhoneNumber2)
{ {
_BookItem* spaceItem = new _BookItem; BookItem* spaceItem = new BookItem;
spaceItem->_sFirstName = sFirstName; spaceItem->_sFirstName = sFirstName;
spaceItem->_sLastName = sLastName; spaceItem->_sLastName = sLastName;
spaceItem->_sPhoneNumber1 = sPhoneNumber1; spaceItem->_sPhoneNumber1 = sPhoneNumber1;
@ -33,7 +33,7 @@ int CBookItems::SetNewValueToItem(string sFirstName, string sLastName, string sP
{ {
if (nNumOfItem == i) if (nNumOfItem == i)
{ {
_BookItem spaceItem; BookItem spaceItem;
spaceItem._sFirstName = sFirstName; spaceItem._sFirstName = sFirstName;
spaceItem._sLastName = sLastName; spaceItem._sLastName = sLastName;
spaceItem._sPhoneNumber1 = sPhoneNumber1; spaceItem._sPhoneNumber1 = sPhoneNumber1;
@ -72,6 +72,13 @@ int CBookItems::GetItem(int nNumOfItem, string& sFirstName, string& sLastName, s
} }
} }
const CBookItems::BookItem& CBookItems::GetItem(int nNumOfItem)
{
if (nNumOfItem < 0 || nNumOfItem > _aItems.size()) return CBookItems::BookItem();
return _aItems[nNumOfItem];
}
int CBookItems::GetSize() int CBookItems::GetSize()
{ {
return _aItems.size(); return _aItems.size();
@ -300,4 +307,19 @@ int CBookItems::LoadItems(string sNameOfFile)
} }
}
std::ostream& operator<<(std::ostream& s, const CBookItems::BookItem& item)
{
s << item._sFirstName << " " << item._sLastName << ": " << item._sPhoneNumber1;
if (item._sPhoneNumber2 != "")
s << ", " << item._sPhoneNumber2;
return s;
}
std::istream& operator>>(std::istream& s, CBookItems::BookItem& item)
{
s >> item._sFirstName >> item._sLastName >> item._sPhoneNumber1 >> item._sPhoneNumber2;
return s;
} }

View File

@ -19,16 +19,33 @@ using namespace std;
class CBookItems class CBookItems
{ {
private: public:
struct _BookItem struct BookItem
{ {
string _sFirstName; private:
string _sLastName; string _sFirstName;
string _sPhoneNumber1; string _sLastName;
string _sPhoneNumber2; string _sPhoneNumber1;
string _sPhoneNumber2;
public:
BookItem()
{
}
~BookItem()
{
}
//===============================================================================
/**
*Ïåðåîïðåäåëÿåò îïåðàòîðû âûâîäà/âûâîäà
*/
friend std::ostream& operator<<(std::ostream& s, const BookItem& item);
friend std::istream& operator>>(std::istream& s, BookItem& item);
friend CBookItems;
}; };
vector<_BookItem> _aItems; vector<BookItem> _aItems;
public: public:
@ -68,6 +85,12 @@ public:
*/ */
int GetItem(int nNumOfItem, string& sFirstName, string& sLastName, string& sPhoneNumber1, string& sPhoneNumber2); int GetItem(int nNumOfItem, string& sFirstName, string& sLastName, string& sPhoneNumber1, string& sPhoneNumber2);
//===============================================================================
/**
*Âîçâðàùàåò ýëåìåíò òåëåôîííîãî ñïðàâî÷íèêà
*/
const BookItem& GetItem(int nNumOfItem);
//=============================================================================== //===============================================================================
/** /**
*Âîçâðàùàåò êîëè÷åñòâî ýëåìåíòîâ â òåëåôîííîì ñïðàâî÷íèêå *Âîçâðàùàåò êîëè÷åñòâî ýëåìåíòîâ â òåëåôîííîì ñïðàâî÷íèêå

View File

@ -21,15 +21,7 @@ void CConsoleUI::PrintPhoneBook(CBookItems& CPhoneBook)
if (CPhoneBook.GetSize() >= 1) if (CPhoneBook.GetSize() >= 1)
{ {
for (int i = 0; i < CPhoneBook.GetSize(); i++) for (int i = 0; i < CPhoneBook.GetSize(); i++)
{ cout << 1 + i << ". " << CPhoneBook.GetItem(i) << endl;
string sFName = " ";
string sLName = " ";
string sNum1 = " ";
string sNum2 = " ";
CPhoneBook.GetItem(i, sFName, sLName, sNum1, sNum2);
cout << 1 + i << ". " << sFName << " " << sLName << ": " << sNum1 << ", " << sNum2 << endl;
}
} }
else else
{ {