syntaxe while avec un itérateur
Bonjour.
je m'initie au C++ et je rencontre un problème lors de la compilation d'un bout de code
Code:
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:
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:
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.