hi reached a point where im not sure how to proceed. the main objective of my program:
1) read 5 values from a file(.csv)
date (class with 3 variables - day,month, year)
time (class with 2 variables - minute, hour)
float wSpeed (under class weather)
float temperature (under class weather)
float solarRadiation (under class weather)
2) put into an object
3) put it into a vector
main
int main()
{
string filename;
ifstream input;
Vector<weather> windlog; //have a vector called windlog
cout <<"enter file name:" <<endl;
cin >> filename;
input.open(filename.c_str());
input.ignore(500,'\n');
string sDay, sMonth, sYear, sHH, sMM, wind, solar, temperature;
date d1;
time t1;
weather w1;
getline(input, sDay,'/'); //stop getting input at '/'
getline(input, sMonth,'/');
getline(input, sYear,' ');
getline(input, sHH,':');
getline(input, sMM,',');
int day1 = atoi(sDay.c_str()); //convert string to int (atoi)
int month1 = atoi(sMonth.c_str());
int year1 = atoi(sYear.c_str());
int hour1 = atoi(sHH.c_str());
int min1 = atoi(sMM.c_str());
d1.setDate(day1,month1,year1); //set date using converted string
t1.setTime(min1, hour1); //set time using converted string
// skip the first 9 columns of .csv file
for(int i=0; i<9; i++)
{
input.ignore(50, ','); //ignore ','
}
//location now at wSpeed date of .csv file
getline(input, wind,',');
float wS1 = atof(wind.c_str()); // convert string to float
//next location is the location solarRadiation
getline(input, solar,',');
float sR1= atof(solar.c_str()); // convert string to float
//move 5 columns
for(int i=0; i< 5; i++)
{
input.ignore(50, ',');
}
//at location of temperature
getline(input, temperature,'\n');
float temperature1 = atof(temperature.c_str()); // convert string to
float
//when i print it out, it gives me the correct data
/*
cout << d1; //date class that contains dd,mm,yy
cout << t1;//time class that contains hh, mm
cout << wS1 ;
cout << sR1;
cout << temperature1 << endl;
*/
//trying to put these data into an object file: weather
//i tried doing something like this
weather obj1(wS1, sR1, temperature1, d1, t1);
cout << objt1;//gives me weird values but when i cout each variable, it
works out fine
not going to write the whole date/time.h/cpp cause i think it'll take up too much space
date.h
public:
setday, setmonth, setyear, setdate(day,month,year);
getday,getmonth,getyear;
private: day,month,year;
time.h
public:
setminute, sethour, settime(minute,hour);
getminute,get hour;
private: minute, hour;
weather class(where im having the problems)
.H
#ifndef H_WEATHER
#define H_WEATHER
#include <iostream>
#include <string>
#include "time.h"
#include "date.h"
using namespace std;
class weather: public date, time
{
friend ostream& operator << (ostream&, const weather&);
friend istream& operator >> (istream&, weather&);
public:
weather();
weather(float wSpeed, float solarRadiation, float temperature,
date d1, time t1);
~weather();
void setWspeed(float wSpeed);
void setSolarRadiation(float solarRadiation);
void setTemperature(float temperature);
float getWspeed() const ;
float getSolarRadiation() const;
float getTemperature() const;
void setWeather(float wS, float sR, float t,date d1, time t1);
date getDate();
time getTime();
date d1;//mm, hh
time t1;//dd,mm,yy
private:
float wSpeed;
float solarRadiation;
float temperature;
};
#endif
.CPP
#include <iostream>
#include "weather.h"
#include "date.h"
#include "time.h"
weather::weather()
{
wSpeed=0;
solarRadiation=0;
temperature = 0;
}
weather::weather(float wS, float sR, float t, date d1, time
t1):date(day,month,year), time(hours,minute)
{
wS = wS;
sR = sR;
t =t;
d1.setDate(day,month, year);
t1.setTime(hours,minute);
}
weather::~weather() {}
void weather::setWeather(float wS, float sR, float t)
{
wSpeed =wS;
solarRadiation=sR;
temperature =t;
}
void weather::setWspeed(float wS)
{
wSpeed =wS;
}
void weather::setSolarRadiation(float sR)
{
solarRadiation=sR;
}
void weather::setTemperature(float t)
{
temperature = t;
}
void weather::setWeather(float wS,float sR, float t, date d1, time
t1)
{
wSpeed=wS;
solarRadiation=sR;
temperature = t;
}
float weather::getWspeed() const
{
return wSpeed;
}
float weather::getSolarRadiation() const
{
return solarRadiation;
}
float weather::getTemperature() const
{
return temperature;
}
ostream& operator<< (ostream& osObject, const weather& weather1)
{
osObject << weather1.wSpeed <<" " << weather1.solarRadiation <<""
<< weather1.temperature << weather1.d1 << weather1.t1 ;
return osObject;
}
istream& operator >> (istream& isObject, weather& weather1)
{
isObject >> weather1.wSpeed>> weather1.solarRadiation >>
weather1.temperature >> weather1.d1 >> weather1.t1;
return isObject;
}
how do i put the values into an object? is it correct i have to use inheritance so i can overload the weather constructor so it can take a date and time class?