| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | // See README.txt for information and build instructions.#include <fstream>#include <google/protobuf/util/time_util.h>#include <iostream>#include <string>#include "addressbook.pb.h"using namespace std;using google::protobuf::util::TimeUtil;// Iterates though all people in the AddressBook and prints info about them.void ListPeople(const tutorial::AddressBook& address_book) {  for (int i = 0; i < address_book.people_size(); i++) {    const tutorial::Person& person = address_book.people(i);    cout << "Person ID: " << person.id() << endl;    cout << "  Name: " << person.name() << endl;    if (person.email() != "") {      cout << "  E-mail address: " << person.email() << endl;    }    for (int j = 0; j < person.phones_size(); j++) {      const tutorial::Person::PhoneNumber& phone_number = person.phones(j);      switch (phone_number.type()) {        case tutorial::Person::MOBILE:          cout << "  Mobile phone #: ";          break;        case tutorial::Person::HOME:          cout << "  Home phone #: ";          break;        case tutorial::Person::WORK:          cout << "  Work phone #: ";          break;        default:          cout << "  Unknown phone #: ";          break;      }      cout << phone_number.number() << endl;    }    if (person.has_last_updated()) {      cout << "  Updated: " << TimeUtil::ToString(person.last_updated()) << endl;    }  }}// Main function:  Reads the entire address book from a file and prints all//   the information inside.int main(int argc, char* argv[]) {  // Verify that the version of the library that we linked against is  // compatible with the version of the headers we compiled against.  GOOGLE_PROTOBUF_VERIFY_VERSION;  if (argc != 2) {    cerr << "Usage:  " << argv[0] << " ADDRESS_BOOK_FILE" << endl;    return -1;  }  tutorial::AddressBook address_book;  {    // Read the existing address book.    fstream input(argv[1], ios::in | ios::binary);    if (!address_book.ParseFromIstream(&input)) {      cerr << "Failed to parse address book." << endl;      return -1;    }  }  ListPeople(address_book);  // Optional:  Delete all global objects allocated by libprotobuf.  google::protobuf::ShutdownProtobufLibrary();  return 0;}
 |