Bueno, ya no le doy más vueltas al asunto.
De esta forma
parece que interpreta de forma correcta todas las formas de encontrarse un '.'.
Código C++:
Ver originalpalabra.palabra
palabra. palabra
palabra .palabra
palabra . palabra
Lo he hecho con recursividad. La idea es que si el token contiene un caracter punto, se sustituye por un espacio y se llama a la función de forma recursiva.
Algo así:
Código C++:
Ver original#include <iostream>
#include <sstream>
#include <string.h>
using namespace std;
int cuenta( string s )
{
istringstream is(s);
string token;
int total = 0;
while(is >> token)
{
size_t pos= token.find('.');
if (pos!=string::npos)
{
token.replace (pos,1,1,' ');
total+= cuenta(token);
}
else
{
++total;
}
}
return total;
}
int main()
{
string frase="Contar palabras.Se me da bien";
cout<<"La frase '"<<frase<<"' tiene "<<cuenta(frase)<<" palabras."<<endl;
return 0;
}