Ich habe Probleme beim Lesen von einer Eingabedatei. Die Eingangsdatei wie dieserLesen von Eingabedatei
Lionel Messi -10 43
Fernando Torres 9 -29
Cristiano Ronaldo 7 31
Wayne Rooney 10 37
Neymar 17 29
siehtAndres Iniesta 8 32
Robin van Persie 19 20
Lionel Messi 10 43
Xavi Hernandez 6 36
Mesut Özil 10 38
Didier Drogba 10 35
Fernando Torres 9 29
Kaká 10 17
Das Problem ist, dass ich die Funktion getline nicht verwenden kann, weil ich den Namen in eine einzelne Variable speichern möchte, um sie in einem Array zu speichern, und die erste Zahl in eine Variable und die zweite in eine andere Variable. Ich habe auch versucht, die Peek-Funktion zu benutzen, aber ich habe das nie gelernt, also hatte ich keinen Erfolg damit. Wenn jemand weiß, wie bis zum Ende des Namens zu lesen und speichern Sie es in einer einzigen Variablen, die sehr geschätzt werden würde. Diese
ist, was mein Code wie folgt aussieht, wenn im aus der Eingabedatei lesen
while(!fin.eof())
{
fin >> first >> last >> num >> point;
if (num > 0 && point > 0)
{
list[i].firstname = first;
list[i].lastname = last;
list[i].number = num;
list[i].points = point;
i++;
}
else if (num < 0 || point < 0)
{
reject[j].firstname = first;
reject[j].lastname = last;
reject[j].number = num;
reject[j].points = point;
j++;
}
}
Das funktioniert perfekt, wenn die Eingabe einen ersten und einen Nachnamen hat. Ich weiß, das Problem ist auf der fin >> first >> last >> num >> point;
aber ich bin nicht ganz sicher, wie erste Stelle setzen und die letzten (und möglicherweise Mitte) zusammen
Ah, aber Sie können 'getline' verwenden. – chris
Ist der "Abstand" zwischen den Teilen von Namen der gleiche wie zwischen dem letzten Namen und den Zahlen? Es wäre sehr hilfreich, wenn zwischen den letzten Namen und den Zahlen ein Tab-Zeichen "\ t" steht. Sonst wollen Sie (wahrscheinlich) eine ganze Zeile lesen und dann die Zahlenbits von der Rückseite des Strings entfernen (zum Beispiel mit 'std :: string :: find_last_of' und' std :: string :: substr')) –
Ja, alle Leerzeichen sind zwischen den Namen und Nummern gleich. Also ist es möglich, die ganze Zeile in einer String-Variablen zu speichern und dann die zwei Zahlen vom Ende der Zeichenfolge zu entfernen und sie in separate Variablen zu setzen? – kylekolossus