Bonjour.

je m'initie au C++ et je rencontre un problème lors de la compilation d'un bout de code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
std::ifstream fichier_lecture {"texte.txt"};
std::string ligne {""};
 
while (std::getline(fichier_lecture,ligne))
  {
    nb_ligne++;
    std::string::iterator it {std::find(std::begin(ligne),std::end(ligne),' ')};
    while (it != std::end(ligne))
    {
       ...
    }
     ...
  }
}
compile très bien

alors que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
std::ifstream fichier_lecture {"texte.txt"};
std::string ligne {""};
 
while (std::getline(fichier_lecture,ligne))
  {
    nb_ligne++;
    while (std::string::iterator it {std::find(std::begin(ligne),std::end(ligne),' ')} != std::end(ligne))
    {
       ...
    }
     ...
  }
}
renvoie le message d'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
could not convert 'it' from 'std::__cxx11::basic_string<char>::iterator' to 'bool'
Pourquoi, dans la deuxième version, le compilateur cherche-t-il à convertir mon itérateur en booléen?
La condition du while reste bien une comparaison entre 2 itérateurs, non?

Merci de votre aide.