Je travaille sur un devoir où je suis supposé lire un fichier et compter le nombre de lignes et en même temps compter les mots dedans. J'ai essayé une combinaison de getline et strtok dans une boucle while, ce qui n'a pas fonctionné.Comment diviser un fichier texte en mots?
fichier: example.txt (le fichier à lire).
Salut, bonjour quelle agréable surprise.
Bienvenue à cet endroit.
Pour que vous passiez un agréable séjour ici.
(3 lignes, et quelques mots).
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;
}
Vous devez dire plus que "ne fonctionne pas". Dites-nous quelle erreur vous obtenez, ou la chose spécifique que votre programme fait différemment que vous attendez, puis posez une question spécifique. Nous ne débuggerons ni ne réécrirons vos devoirs pour vous. – Blorgbeard
Que diriez-vous des exemples de ce qui suit: http://www.codeproject.com/KB/recipes/Tokenizer.aspx Ils sont très efficaces et peu élégante. La bibliothèque String Toolkit rend le traitement de chaînes complexe en C++ simple et facile. –