In: Computer Science
3 files
4th file is cvehicle.cpp and it needs to be created from scratch, and cvehicle.h needs to be filled in
This was the test drive:
carOne = Hyundai Sonata
carTwo = Hyundai Sonata
carThree =
Enter the make and model of a vehicle: toyota corolla
You entered: toyota corolla
Testing the assignment operator...
carOne == Hyundai Sonata
carTwo == Hyundai Sonata
carThree == Hyundai Sonata
Here are the contents of the car file:
Lamborghini Miura
Ferrari Enzo
Porsche GT2
Ford Mustang
Chevrolet Corvette
Kia Rio
Nissan Versa
Here is what's in the files:
main.cpp
#include
#include
#include
#include
#include "cvehicle.h"
using namespace std;
// ==== main
==================================================================
//
//
============================================================================
int main()
{
// test the constructors
CVehicle carOne("Hyundai", "Sonata");
const CVehicle carTwo = carOne;
CVehicle carThree;
// display the contents of each newly-constructed object...
// should see "Hyundai Sonata"
cout << "carOne = ";
carOne.WriteVehicle();
cout << endl;
// should see "Hyundai Sonata" again
cout << "carTwo = ";
carTwo.WriteVehicle();
cout << endl;
// should see nothing
cout << "carThree = ";
carThree.WriteVehicle();
cout << endl;
// try the "read" function and the overloaded insertion
operator
cout << "Enter the make and model of a vehicle: ";
carThree.ReadVehicle();
cout << "You entered: " << carThree << endl
<< endl;
// try the assignment operator
carOne = carThree = carTwo;
cout << "Testing the assignment operator..." <<
endl;
cout << "carOne == " << carOne << endl;
cout << "carTwo == " << carTwo << endl;
cout << "carThree == " << carThree << endl
<< endl;
// open the car data file
ifstream carFile("cars.dat");
if (carFile.fail())
{
cerr << "Error opening the input file..." <<
endl;
exit(EXIT_FAILURE);
}
cvehicle.h
#ifndef CVEHICLE_HEADER
#define CVEHICLE_HEADER
#include
#include
using namespace std;
// constants
const int BUFLEN = 256;
// class declaration
class CVehicle
{
public:
// ???
private:
char m_make[BUFLEN];
char m_model[BUFLEN];
};
// non-member functions
istream& operator>>(istream &inStream, CVehicle
&rhs);
ostream& operator<<(ostream &outStream, const
CVehicle &rhs);
#endif // CVEHICLE_HEADER
cars.dat
Lamborghini Miura
Ferrari Enzo
Porsche GT2
Ford Mustang
Chevrolet Corvette
Kia Rio
Nissan Versa

#######################################
cars.dat
#######################################
Lamborghini Miura
Ferrari Enzo
Porsche GT2
Ford Mustang
Chevrolet Corvette
Kia Rio
Nissan Versa
#######################################
cvehicle.cpp
#######################################
#include "cvehicle.h"
CVehicle::CVehicle() {
strcpy(m_make, "");
strcpy(m_model, "");
}
CVehicle::CVehicle(string make, string model) {
strcpy(m_make, make.c_str());
strcpy(m_model, model.c_str());
}
void CVehicle::WriteVehicle() const {
cout << m_make << " " << m_model;
}
void CVehicle::ReadVehicle() {
string make; string model;
cin >> make >> model;
strcpy(m_make, make.c_str());
strcpy(m_model, model.c_str());
}
CVehicle& CVehicle::operator=(const CVehicle &t) {
strcpy(m_make, t.m_make);
strcpy(m_model, t.m_model);
return *this;
}
// non-member functions
istream& operator>>(istream &inStream, CVehicle &rhs) {
string make; string model;
inStream >> make >> model;
strcpy(rhs.m_make, make.c_str());
strcpy(rhs.m_model, model.c_str());
return inStream;
}
ostream& operator<<(ostream &outStream, const CVehicle &rhs) {
cout << rhs.m_make << " " << rhs.m_model;
return outStream;
}
#######################################
cvehicle.h
#######################################
#ifndef CVEHICLE_HEADER
#define CVEHICLE_HEADER
#include<iostream>
#include<cstring>
using namespace std;
// constants
const int BUFLEN = 256;
// class declaration
class CVehicle
{
public:
CVehicle();
CVehicle(string make, string model);
void WriteVehicle() const;
void ReadVehicle();
CVehicle& operator=(const CVehicle &t);
// non-member functions
friend istream& operator>>(istream &inStream, CVehicle &rhs);
friend ostream& operator<<(ostream &outStream, const CVehicle &rhs);
private:
char m_make[BUFLEN];
char m_model[BUFLEN];
};
#endif // CVEHICLE_HEADER
#######################################
main.cpp
#######################################
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<cstring>
#include "cvehicle.h"
using namespace std;
// ==== main ===============
// =========================
int main()
{
// test the constructors
CVehicle carOne("Hyundai", "Sonata");
const CVehicle carTwo = carOne;
CVehicle carThree;
// display the contents of each newly-constructed object...
// should see "Hyundai Sonata"
cout << "carOne = ";
carOne.WriteVehicle();
cout << endl;
// should see "Hyundai Sonata" again
cout << "carTwo = ";
carTwo.WriteVehicle();
cout << endl;
// should see nothing
cout << "carThree = ";
carThree.WriteVehicle();
cout << endl;
// try the "read" function and the overloaded insertion operator
cout << "Enter the make and model of a vehicle: ";
carThree.ReadVehicle();
cout << "You entered: " << carThree << endl << endl;
// try the assignment operator
carOne = carThree = carTwo;
cout << "Testing the assignment operator..." << endl;
cout << "carOne == " << carOne << endl;
cout << "carTwo == " << carTwo << endl;
cout << "carThree == " << carThree << endl << endl;
// open the car data file
ifstream carFile("cars.dat");
CVehicle testCar;
if (carFile.fail())
{
cerr << "Error opening the input file..." << endl;
exit(EXIT_FAILURE);
}
cout << "Here are the contents of the car file:" << endl;
while(carFile >> testCar) {
cout << testCar << endl;
}
carFile.close();
}
************************************************** Thanks for your question. We try our best to help you with detailed answers, But in any case, if you need any modification or have a query/issue with respect to above answer, Please ask that in the comment section. We will surely try to address your query ASAP and resolve the issue.
Please consider providing a thumbs up to this question if it helps you. by Doing that, You will help other students, who are facing similar issue.