Ich habe C# und Java verwendet, daher bin ich es gewohnt, eine Eingabedatei zu öffnen und bis zum Ende des Dateistreams zu lesen, während in jeder Zeile eine Art .split
verwendet wird mit dem Trennzeichen als Tabulator, Komma, usw., um die einzelnen Werte zu erhalten ODER die spezifische Anzahl von Zeichen für jeden Wert zu extrahieren. Ich begann vor kurzem eine C++ Klasse und hat keine Probleme mit den Aufgaben habe bisher, weil sie meistens Konsole Eingabe/Ausgabe verwenden, aber ich finde es ziemlich schwierig, Daten aus einer Datei zu extrahieren:C++ Parsen einer Eingabedateizeile in ein Array von Objekten
struct Student{
string _fullName[50];
int _grade;
float _avg;
};
int main(){
Student students[30];
ifstream inputFile;
inputFile.open("file.txt");
if (inputFile.is_open()){
int i = 0;
char data[100];
while (inputFile.getline(data, 100)){
//need to split the data by \t and properly convert it into an int/string/float where needed
}
}
system("pause");
return 0;
}
Ich überlegte, den getline-Begrenzer auf \ t zu setzen und jeden Wert auf diese Weise zu setzen (dh i nach den 3 Eigenschaften auf 0 zurückzusetzen), aber das funktioniert nicht, wenn einer der Zeilen ein Wert fehlt. In dieser kleinen Aufgabe spielt das keine Rolle, aber ich versuche, das richtig und effizient zu machen. Was ist der effizienteste Weg, um die Daten in jeder Zeile zu extrahieren und korrekt in den entsprechenden Datentyp zu zerlegen?
Hinweis: Ich sollte an dieser Stelle keine Vektoren oder Algorithmen verwenden.
„Ich bin nicht an diesem Punkt werden unter Verwendung von Vektoren oder Algorithmen soll . " klingt wie Sie haben einen dieser Lehrer, die glauben, dass eine C++ - Klasse mit C, nicht C++ beginnen sollte. Schade. Das ist nicht so, wie C++ gelehrt werden sollte. für mehr: https://www.youtube.com/watch?v=YnWhqhNdYyk – johnbakers