Compter les nombres de mots dans une chaine
	
	
		Bonjour,
Je suis confronté à un problème d'algorithmie, je voudrais m'entrainer à faire un programme qui compte les mots d'une phrase, sachant qu'un mot est séparé par un espace ou un '_'. Ce que je compte faire c'est regarder si la case de l'indice sur lequel ma boucle est vaut un espace ou un '_' et si la case de l'indice suivant est différente d'un espace ou d'un '_' (donc est une lettre ou un chiffre) alors cela est compté pour un mot.
J'ai fais le code suivant qui ne renvoi aucune erreur mais m'affiche : 
	Citation:
	
		
		
			Nombre de mots : 0 Entrez la phrase à tester
			
		
	
  Mon programme compte bien car la phrase revient autant de fois qu'il y a des mots !
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 
 | #include <string>
#include <cctype>
#include <iostream>
 
using namespace std;
 
namespace
{
	unsigned CompterNombreMots(string chaine)
	{
		unsigned NombreDeMots = 0;
		for(unsigned i = 0; i < chaine.size() - 1; i++)
		{
			if (((chaine[i] == ' ') || (chaine[i] == '_')) && ((chaine[i+1] != ' ') || (chaine[i+1] != '_')))
			{
				NombreDeMots++; 
			}
		}
		return NombreDeMots;
	}
}
 
int main ()
{
	for (;;)
	{
		cout << "Entrez la phrase à tester : " << endl;
		string chaine;
		cin >> chaine;
		if (chaine == "") break;
		cout << "Nombre de mots : " << CompterNombreMots(chaine);
	}
	return 0;
} // main() | 
 Merci de votre aide.