Bonjour la communauté,
Si je code ainsi :
le compilateur (Mingw avec Code::Blocks) ne dit rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 bool b; std::string route="010010"; std::string rte=""; for(int i(0); i<6; i++) { rte=route[i]; if(rte=="0") b=false; if(rte=="1") b=true; // fait des trucs avec b }
Mais si je code ainsi (pour économiser la variable rte qui ne sert apparemment pas à grand chose) :
le compilateur m'accuse de comparer des choses incomparables :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 bool b; std::string route="010010"; for(int i(0); i<6; i++) { if(route[i]=="0") b=false; if(route[i]=="1") b=true; // fait des trucs avec b }
warning: comparison with string literal results in unspecified behaviour [-Waddress]|
error: ISO C++ forbids comparison between pointer and integer [-fpermissive]|
Je ne comprends pas trop quelle est la différence entre ces 2 codes qui, dans mon esprit, devraient produire le même comportement, i.e. déterminer le booléen true ou false suivant que le charactère n°i de la chaîne route vaut "0" ou "1"...
Où donc me plante-je ?
Rick.
Partager