Problem mit getline() Trennzeichen
Ich versuche, durch Lesen einer Datei, und bestimmte strings in jeder Zeile. Das Ende der Zeichenfolge, die ich brauche, ist gekennzeichnet durch ein Semikolon. Ich habe keine Probleme dies zu tun, aber ich bin zu bemerken, dass getline() mit dem Trennzeichen wird automatisch das anfügen einer neuen Zeile zu meinem string.
filename.open(FileName);
while(filename)
{
getline(filename, name[counter], ';');
filename >> amount[counter] >> unit[counter] >> calories[counter];
counter++;
}
Also, wenn ich gehen würde, um drucken Sie die Namen von array-würde es 1 extra-Zeilenumbruch hatte, dass ich nicht selber dort, als gäbe es einen zusätzlichen '\n' wird auf dem Weg abgeholt. Hat jemand eine Lösung? Ein Beispiel für die Datei-format, die ich lese, von unten ist.
Dave Jones; 24 Hoch
Jillian Jones; 34 Kurz
etc...
>> amount[counter] >> unit[counter] >> calories[counter]
. Auch, was passiert, wenn counter++
überschreitet die Größe des arrays?InformationsquelleAutor DiamonW | 2013-02-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach dem ausführen
newline ist immer noch in den Puffer. Dies in der Regel nicht ein problem, wenn Sie nur ">>"; es wird einfach nur ignoriert Zeilenumbrüche. Aber wenn Sie mischen getline und ">>" Sie müssen ignorieren die Zeilenumbrüche, ">>" hinterlässt. Probieren Sie etwas wie dieses:
Dies ist ein wenig redundant, aber es ist leicht zu Lesen.
InformationsquelleAutor Dave Johnson
Einfacher zu schlucken, die whitespace-Zeichen:
InformationsquelleAutor c-urchin
Bessere Weg wäre, die Datei Lesen und Zeile für Zeile in einen Puffer und dann split strings durch ';':
InformationsquelleAutor Slava