Qualcosa del genere?
codice:
#include <iostream>
#include <string>
#include <fstream>
#include <locale>
using namespace std;
int main()
{
locale loc("");
string fileName;
unsigned int wordCount=0, charCount=0;
bool lastAlNum=false;
cout<<"Nome file: ";
getline(cin, fileName);
ifstream is;
is.open(fileName.c_str());
if(!is)
{
cerr<<"Impossibile aprire il file."<<endl;
return 1;
}
while(is)
{
if(!use_facet< ctype<char> >(loc).is(ctype<char>::alpha | ctype<char>::digit,is.get()))
{
if(lastAlNum)
wordCount++;
lastAlNum=false;
}
else
lastAlNum=true;
charCount++;
}
is.close();
cout<<charCount<<" caratteri"<<endl;
cout<<wordCount<<" parole"<<endl;
return 0;
}
Potrebbe dare qualche problema con le lettere accentate se l'implementazione di locale non è fatta come Dio comanda.