#include "phone_number.h" #include #include using namespace std; static const size_t number_size = 10; static const size_t area_code_size = 3; static const size_t exchange_size = 3; static const char invalid_number[] = "0000000000"; phone_number::phone_number(const string &str) { number_.resize(str.size()); string::iterator iter = copy_if(str.cbegin(), str.cend(), number_.begin(), static_cast(isdigit)); number_.resize(distance(number_.begin(), iter)); if (number_.size() == number_size + 1 && number_.front() == '1') { number_.erase(number_.begin()); } else if (number_.size() != number_size) { number_ = invalid_number; } } string phone_number::number() const { return number_; } string phone_number::area_code() const { return number_.substr(0, area_code_size); } phone_number::operator string() const { return string("(") + area_code() + ") " + number_.substr(area_code_size, exchange_size) + '-' + number_.substr(area_code_size + exchange_size); }