Ich habe Probleme mit dem folgenden Code. Was ich erwarte ist, dass die do-while
Schleife 4 Mal ausgeführt wird, einmal für jede Zeile der Textdatei, in der sie eingelesen wird, aber in Wirklichkeit führt sie fünf Mal aus, was später zu einem Segmentfehler im Programm führt. Was mache ich hier falsch, was dazu führt, dass es die zusätzliche Iteration ausführt? Ich habe versucht, er do-while
mit einer einfachen while
Schleife zu ersetzen, aber das Ergebnis ist das gleiche.Diese Schleife führt mehr Iterationen als erwartet aus
int count = 0;
string devices[4];
string line;
ifstream DeviceList;
DeviceList.open("devices/device_list.txt");
do
{
getline(DeviceList, line);
devices[count] = line;
count ++;
} while(!DeviceList.eof());
device_list.txt
enthält folgende Komponenten:
WirelessAdaptor
GPU
CPU
Display
Sind Sie sicher, dass am Ende Ihrer Eingabedatei keine Leerzeichen (insbesondere Leerzeilen) stehen? Verwenden Sie einen Debugger (oder nur "cout"), um den Wert von "line" in jedem Schritt zu untersuchen. – suszterpatt
Beendet die 4. Zeile Ihrer .txt-Datei ("Display") mit einem Carriage Return/Newline? Wenn ja, haben Sie wirklich eine zusätzliche (leere) Zeile. – cbranch