Ich lese eine Datei und speichert die Daten in einem Vektor eines Strukturtyps. Ich habe 3 verschiedene Funktionen:Versuch, einen Vektor eines Strukturtyps, aber keine Konsolenausgabe zu übergeben
- readfile (
insert arg here
) // liest eine Textdatei und bekommt einen Namen und Stunden während der Woche gearbeitet. - BubbleSort (`mehr ARG) // selbsterklärend
- Ausgang (` Arg ') // gibt Inhalt des Vektors
Funktionsprototypen:
void readFile(vector<Employee *> workers, int numOfEmployees);
void bubbleSort(vector<Employee *> workers, int numOfEmployees);
void output(vector<Employee *> workers, int numOfEmployees);
Struct:
struct Employee
{
string name;
vector<int> hours;
int totalHours;
}
Main:
vector<Employee *> workers;
int numOfEmployees = 0;
readFile(workers, numOfEmployees);
bubbleSort(workers, numOfEmployees);
output(workers, numOfEmployees);
cout << endl;
system("pause");
return 0;
readfile:
ifstream fin;
fin.open("empdata4.txt");
if (fin.fail())
{
cout << "File failed to open. Program will now exit.\n";
exit(1);
}
fin >> numOfEmployees;
workers.resize(numOfEmployees);
for (int row = 0; row < numOfEmployees; row++)
{
workers[row] = new Employee;
workers[row]->hours.resize(7);
fin >> workers[row]->name;
for (int i = 0; i < 7; i++)
{
fin >> workers[row]->hours[i];
}
}
// aus offensichtlichen Gründen Blase Art ohne
Ausgabe:
for (int i = 0; i < numOfEmployees; i++)
{
cout << workers[i]->name << " ";
for (int x = 0; x < 7; x++)
{
cout << workers[i]->hours[x] << " ";
}
cout << endl;
}
Die Konsolenausgabe ist leer, minus der cout << endl;
in Haupt- und system("pause");
Ich glaube, ich setze alles zum größten Teil richtig auf, aber ich weiß es immer noch nicht. Danke für jede Hilfe!
EDIT: Added Funktionsprototypen und struct
Bitte versuchen, eine erstellen [Minimal, *** *** Vollständige und prüfbare Beispiel] (http://stackoverflow.com/ help/mcve) um uns zu zeigen. Einschließen der Funktionskopfzeilen (Deklarationen). Die Funktionsdeklarationen sind hier eigentlich wichtig! –
Und mit der Funktionsdeklaration ist das Problem offensichtlich: Sie übergeben den Vektor * nach Wert *. Das bedeutet, dass der Vektor kopiert wird und Sie nur an der Kopie arbeiten, niemals am Original. Ich schlage vor, Sie [erhalten ein paar gute Anfänger Bücher] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) und lesen Sie über das Übergeben von Argumenten durch * Verweis *. –
Wie sieht Ihre Eingabedatei aus? Ohne dies kann ich nicht entscheiden, wo es falsch ist. –