diff --git a/d00/ex01/Contact.class.cpp b/d00/ex01/Contact.class.cpp index d23bcec..9f0d6ad 100644 --- a/d00/ex01/Contact.class.cpp +++ b/d00/ex01/Contact.class.cpp @@ -14,16 +14,24 @@ Contact::~Contact( void ) { } // ADD -void Contact::add_first( std::string str ) {this->first.assign(str);} -void Contact::add_last( std::string str ) {this->last.assign(str);} -void Contact::add_nick( std::string str ) {this->nick.assign(str);} -void Contact::add_num( std::string str ) {this->num.assign(str);} -void Contact::add_secret( std::string str ) {this->secret.assign(str);} +void Contact::add_first( std::string str ) {this->_first.assign(str);} +void Contact::add_last( std::string str ) {this->_last.assign(str);} +void Contact::add_nick( std::string str ) {this->_nick.assign(str);} +void Contact::add_num( std::string str ) {this->_num.assign(str);} +void Contact::add_secret( std::string str ) {this->_secret.assign(str);} // GET -std::string Contact::get_first( void ) {return first;} -std::string Contact::get_last( void ) {return last;} -std::string Contact::get_nick( void ) {return nick;} -std::string Contact::get_num( void ) {return num;} -std::string Contact::get_secret( void ) {return secret;} +std::string Contact::get_first( void ) {return _first;} +std::string Contact::get_last( void ) {return _last;} +std::string Contact::get_nick( void ) {return _nick;} +std::string Contact::get_num( void ) {return _num;} +std::string Contact::get_secret( void ) {return _secret;} +// CLEAR +void Contact::clear_contact() { + this->_first.clear(); + this->_last.clear(); + this->_nick.clear(); + this->_num.clear(); + this->_secret.clear(); +} diff --git a/d00/ex01/Contact.class.hpp b/d00/ex01/Contact.class.hpp index e27aabd..9dd9823 100644 --- a/d00/ex01/Contact.class.hpp +++ b/d00/ex01/Contact.class.hpp @@ -23,15 +23,17 @@ public: std::string get_num(); std::string get_secret(); + void clear_contact(); + void print_contact(); private: - std::string first; - std::string last; - std::string nick; - std::string num; - std::string secret; + std::string _first; + std::string _last; + std::string _nick; + std::string _num; + std::string _secret; }; diff --git a/d00/ex01/PhoneBook.class.cpp b/d00/ex01/PhoneBook.class.cpp index 7b930c5..b2712ea 100644 --- a/d00/ex01/PhoneBook.class.cpp +++ b/d00/ex01/PhoneBook.class.cpp @@ -16,51 +16,55 @@ void PhoneBook::add_contact() { std::string str; int it; - this->_contact_count++; - it = this->_contact_count; - if (it > 8) - it = 1; - it--; + it = this->_contact_count % 8; + this->_contact[it].clear_contact(); std::cout << B_CYAN "enter a first name pliz :" << std::endl; - while (_contact[it].get_first().length() == 0) + while (this->_contact[it].get_first().length() == 0) { std::cout << B_BLUE "-> " RESET; - std::getline(std::cin, str); + if (!std::getline(std::cin, str)) + return; this->_contact[it].add_first(str); } std::cout << B_CYAN "enter a last name pliz :" << std::endl; - while (_contact[it].get_last().length() == 0) + while (this->_contact[it].get_last().length() == 0) { std::cout << B_BLUE "-> " RESET; - std::getline(std::cin, str); + if (!std::getline(std::cin, str)) + return; this->_contact[it].add_last(str); } std::cout << B_CYAN "enter a nickname pliz :" << std::endl; - while (_contact[it].get_nick().length() == 0) + while (this->_contact[it].get_nick().length() == 0) { std::cout << B_BLUE "-> " RESET; - std::getline(std::cin, str); + if (!std::getline(std::cin, str)) + return; this->_contact[it].add_nick(str); } std::cout << B_CYAN "enter a number pliz :" << std::endl; - while (_contact[it].get_num().length() == 0) + while (this->_contact[it].get_num().length() == 0) { std::cout << B_BLUE "-> " RESET; - std::getline(std::cin, str); + if (!std::getline(std::cin, str)) + return; this->_contact[it].add_num(str); } std::cout << B_CYAN "enter a secret of this contact pliz :" << std::endl; - while (_contact[it].get_secret().length() == 0) + while (this->_contact[it].get_secret().length() == 0) { std::cout << B_BLUE "-> " RESET; - std::getline(std::cin, str); + if (!std::getline(std::cin, str)) + return; this->_contact[it].add_secret(str); } + + this->_contact_count++; } std::string truncate(std::string str, size_t len) { @@ -117,19 +121,22 @@ void PhoneBook::print_contact( int id ) { void PhoneBook::search_contact() { std::string index; - int id; + long id; + char *ret; if (this->print_phonebook() == 0) return; - id = -1; std::cout << std::endl << B_CYAN "choose an index :" << std::endl; - while (id < 0 || id > this->_contact_count - 1 || id > 7) + while (1) { std::cout << B_BLUE "-> " RESET; - std::getline(std::cin, index); - id = std::atoi(index.c_str()); - if (id < 0 || id > this->_contact_count - 1 || id > 7) + if (!std::getline(std::cin, index)) + return; + id = std::strtol(index.c_str(), &ret, 10); + if (*ret || id < 0 || id > this->_contact_count - 1 || id > 7) std::cout << B_RED "sorry, not a valid index" RESET << std::endl; + else + break; } this->print_contact(id); diff --git a/d00/ex01/builds/Contact.class.o b/d00/ex01/builds/Contact.class.o index 5322b86..415acba 100644 Binary files a/d00/ex01/builds/Contact.class.o and b/d00/ex01/builds/Contact.class.o differ diff --git a/d00/ex01/builds/main.o b/d00/ex01/builds/main.o index 5594901..19b7d28 100644 Binary files a/d00/ex01/builds/main.o and b/d00/ex01/builds/main.o differ diff --git a/d00/ex01/main.cpp b/d00/ex01/main.cpp index 71b6ccd..3348973 100644 --- a/d00/ex01/main.cpp +++ b/d00/ex01/main.cpp @@ -9,7 +9,7 @@ int main() { std::string cmd; PhoneBook YellowPage; - while (1) + while (std::cin) { std::cout << std::endl; std::cout << B_YELLOW "enter a command: ADD / SEARCH / EXIT" << std::endl; diff --git a/d00/ex01/phonebook b/d00/ex01/phonebook index a6b476c..0c0a7df 100755 Binary files a/d00/ex01/phonebook and b/d00/ex01/phonebook differ