#include<iostream>#include<fstream>#include<string>#include"addressbook.pb.h"usingnamespacestd;// This function fills in a Person message based on user input.
voidPromptForAddress(tutorial::Person*person){cout<<"Enter person ID number: ";intid;cin>>id;person->set_id(id);cin.ignore(256,'\n');cout<<"Enter name: ";getline(cin,*person->mutable_name());cout<<"Enter email address (blank for none): ";stringemail;getline(cin,email);if(!email.empty()){person->set_email(email);}while(true){cout<<"Enter a phone number (or leave blank to finish): ";stringnumber;getline(cin,number);if(number.empty()){break;}tutorial::Person::PhoneNumber*phone_number=person->add_phones();phone_number->set_number(number);cout<<"Is this a mobile, home, or work phone? ";stringtype;getline(cin,type);if(type=="mobile"){phone_number->set_type(tutorial::Person::MOBILE);}elseif(type=="home"){phone_number->set_type(tutorial::Person::HOME);}elseif(type=="work"){phone_number->set_type(tutorial::Person::WORK);}else{cout<<"Unknown phone type. Using default."<<endl;}}}// Main function: Reads the entire address book from a file,
// adds one person based on user input, then writes it back out to the same
// file.
intmain(intargc,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::AddressBookaddress_book;{// Read the existing address book.
fstreaminput(argv[1],ios::in|ios::binary);if(!input){cout<<argv[1]<<": File not found. Creating a new file."<<endl;}elseif(!address_book.ParseFromIstream(&input)){cerr<<"Failed to parse address book."<<endl;return-1;}}// Add an address.
PromptForAddress(address_book.add_people());{// Write the new address book back to disk.
fstreamoutput(argv[1],ios::out|ios::trunc|ios::binary);if(!address_book.SerializeToOstream(&output)){cerr<<"Failed to write address book."<<endl;return-1;}}// Optional: Delete all global objects allocated by libprotobuf.
google::protobuf::ShutdownProtobufLibrary();return0;}
#include<iostream>#include<fstream>#include<string>#include"addressbook.pb.h"usingnamespacestd;// Iterates though all people in the AddressBook and prints info about them.
voidListPeople(consttutorial::AddressBook&address_book){for(inti=0;i<address_book.people_size();i++){consttutorial::Person&person=address_book.people(i);cout<<"Person ID: "<<person.id()<<endl;cout<<" Name: "<<person.name()<<endl;if(person.has_email()){cout<<" E-mail address: "<<person.email()<<endl;}for(intj=0;j<person.phones_size();j++){consttutorial::Person::PhoneNumber&phone_number=person.phones(j);switch(phone_number.type()){casetutorial::Person::MOBILE:cout<<" Mobile phone #: ";break;casetutorial::Person::HOME:cout<<" Home phone #: ";break;casetutorial::Person::WORK:cout<<" Work phone #: ";break;}cout<<phone_number.number()<<endl;}}}// Main function: Reads the entire address book from a file and prints all
// the information inside.
intmain(intargc,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::AddressBookaddress_book;{// Read the existing address book.
fstreaminput(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();return0;}