I am writing a program and I have a .txt file that has a some information about people. I would like to write that information into an array and then display that information about the person.

The problem is that I don't know how many names will be in the .txt file, or how to write that information to the file.

Here is what I have so far.

#include <iostream>
#include "StaffEmployee.h"
#include "HourlyEmployee.h"
#include <iomanip>
#include <fstream>

using namespace std;

void upload()
{ 
	ifstream  infile;
	infile.open ("hourly.txt");
	while (!infile.eof())
	{

	}

}

int main()
{
	const int size = 20;
	HourlyEmployee a[size];
	HourlyEmployee fellow;
	HourlyEmployee person(10, 55, "Electronics", "Alan", "Good", "E1234") ;

	fellow.display();
	person.display();


	
		
	return 0;
}

and here is my hourlyEmployee class.

#include "Employee.h"
#include <iostream>
#include <string>

using namespace std;

#ifndef HOURLYEMPLOYEE_H
#define HOURLYEMPLOYEE_H

class HourlyEmployee:public Employee
{
	private:
		double hourlyWage;
		double hoursWorked;
		string deptName;
	
	public:
		HourlyEmployee()
		{
			hourlyWage = 0;
			hoursWorked = 0;
			deptName = "unknown";
		}

		HourlyEmployee(double hWage, double hWorked, string dName, string first, string last, string ID) : Employee(first, last, ID)
		{
			hourlyWage = hWage;
			hoursWorked = hWorked;
			deptName = dName;
		}
		void set_hourlyWage(double hWage)
		{
			hourlyWage = hWage;
		}
		void set_hoursWorked(double hWorked)
		{
			hoursWorked = hWorked;
		}
		void set_deptName(string dName)
		{
			deptName = dName;
		}
		double get_hourlyWage()
		{
			return hourlyWage;
		}
		double get_hoursWorked()
		{
			return hoursWorked;
		}
		string get_deptName()
		{
  			return deptName;
		}
		void compute_salary()
		{
			double salary = 0;
			salary = hoursWorked * hourlyWage;
			cout << "2 Week Salary: $" << salary;
			cout << endl;
		}
		void display()
		{
			Employee::display();
			double salary = 0;
			salary = hoursWorked * hourlyWage;
			cout << "2 Week Salary:  $" << salary;
			cout << endl;
			cout << endl;
		}
};

#endif

I don't really know how to put the .txt information into the array so if anyone could give me some idea's or any help at all that would be great.

Thanks

That while statement on line 13 is incorrect because eof() doesn't work like that. Instead, code it something like this

string line;
while(getline(infile, line) )
{
     // now split this string into individual parts for the structure
}

That while statement on line 13 is incorrect because eof() doesn't work like that. Instead, code it something like this

string line;
while(getline(infile, line) )
{
     // now split this string into individual parts for the structure
}

Thanks for that but do you know how to write the information into an array? Or for that matter how to split this string into individual parts for the structure?

Thanks for that but do you know how to write the information into an array? Or for that matter how to split this string into individual parts for the structure?

Yes. But it depends on lots of things -- format of the file, what the array looks like, what delimiters are in the string. Details help make decisions.

Yes. But it depends on lots of things -- format of the file, what the array looks like, what delimiters are in the string. Details help make decisions.

the .txt file is...

Joe Cruise E1111
Bill Bones E2222
Sue Smith E3333
Tom Turpin E4444
Ron Stewart E5555
Mindy Sweet E7777

and the class file employee has string firstName, string lastName, string employeeID.

i want to use an array in my int main to write those names and ID's to the class....


is that possible and if so how would I even start to do it?

The input line can be split using stringstream class

#include <sstream>
...
...
stringstream stream(line);
stream >> firstName >> lastName >> employeeID;

Yes, it's possible. Make an array of the class employee. As you read the file, load the class. You can then access employee[x].FirstName, etc.

This article has been dead for over six months. Start a new discussion instead.