Ich arbeite an einer Aufgabe, bei der ich eine Datei lesen und die Anzahl der Zeilen und gleichzeitig die Wörter in der Datei zählen soll. Ich habe eine Kombination aus getline und strtok innerhalb einer while-Schleife ausprobiert, was nicht funktioniert hat.
file:example.txt (die zu lesende Datei).
Hallo, hallo, was für eine angenehme Überraschung.
Willkommen an diesem Ort.
Ich wünsche Ihnen einen angenehmen Aufenthalt hier.
(3 Zeilen und einige Wörter).
Readfile.cpp
#include <iostream>
#include <fstream>
#include<string>
using namespace std;
int main()
{
ifstream in("example.txt");
int count = 0;
if(!in)
{
cout << "Cannot open input file.\n";
return 1;
}
char str[255];
string tok;
char * t2;
while(in)
{
in.getline(str, 255);
in>>tok;
char *dup = strdup(tok.c_str());
do
{
t2 = strtok(dup," ");
}while(t2 != NULL);
cout<<t2<<endl;
free (dup);
count++;
}
in.close();
cout<<count;
return 0;
}
0 Stimmen
Sie müssen mehr sagen als "hat nicht funktioniert". Sagen Sie uns, welcher Fehler auftritt oder was genau Ihr Programm anders macht, als Sie erwarten, und stellen Sie dann eine konkrete Frage. Wir werden Ihre Hausaufgaben nicht für Sie debuggen oder neu schreiben.
17 Stimmen
Wie wäre es mit einigen der folgenden Beispiele? codeproject.com/KB/rezepte/Tokenizer.aspx Sie sind sehr effizient und etwas elegant. Die String Toolkit Library macht komplexe String-Verarbeitung in C++ einfach und leicht.