Hola, aquí te dejo un método (el que yo uso siempre) que sirve exactamente para que lo necesitás.
Funciona perfectamente!!
Código C++:
Ver original#include <stdio.h>
#include <iostream>
#include <windows.h>
using namespace std;
void CuentaPalabras(string Frase) {
int NumPos = -1;
int TotalPalabras = 0;
while(1) {
NumPos = Frase.find(". ", NumPos + 1);
if (NumPos == -1) break;
TotalPalabras++;
}
cout << "La variable Frase contine " << TotalPalabras << " palabras." << endl; // devuelve "La variable Frase contine 6 palabras."
}
int main () {
string Frase = "Hola. bienvenido. al. futuro. de. la. programacion.";
CuentaPalabras(Frase);
}
Buena suerte!!
PD: Muchas personas se complican la vida haciendo códigos complejos cuando se puede hacer algo más simple e igual de efectivo y funcional.