Ich versuche, die Gesamtzahl der Wörter in einer TXT-Datei zu messen. Die Datei ist zufällig und besteht aus Zeilen mit je 10 Wörtern der Länge 3 bis 10 und wird von dieser code generiert. Die Wörter in einer bestimmten Zeile sind durch ein einzelnes Leerzeichen getrennt. Nun wird die Art, wie ich die Gesamtzahl der Wörter in der Datei zu messen, ist dies:Unerwartetes Verhalten von ifstream (Wortzählung)
ifstream inputFile("myfile.txt", ios::in | ios::binary | ios::ate);
//Count number of total words in input file
long unsigned int numWords;
inputFile.seekg(0);
char c;
while (inputFile.get(c)){
if (isspace(c) && c != '\r') numWords++;
}
//Test
printf("\nSampled file has %lu words\n", numWords);
Wenn ich die oben genannten Code mehrmals ausgeführt, die Hälfte von ihnen wird das richtige Ergebnis und die Hälfte von ihnen einige Zufallszahl. Ich weiß, dass es elegantere Wege, dies zu tun, wie
string word;
long unsigned int ctr = 0;
while (inputFile >> word) ctr++;
(oder vielleicht andere), aber ich würde gerne wissen, warum die erste Option nicht.
Haben Sie '' n''-Zeichen auch berücksichtigt? – alseether
Warum initialisierst du 'numWords' nicht mit Null? – DAle
Wenn das das ganze Programm ist, das Sie verwenden, kann es sein, dass 'numWords' nicht mit 0 initialisiert wird. –