Bonjour la communauté,

Si je code ainsi :
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
}
le compilateur (Mingw avec Code::Blocks) ne dit rien.

Mais si je code ainsi (pour économiser la variable rte qui ne sert apparemment pas à grand chose) :

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
}
le compilateur m'accuse de comparer des choses incomparables :

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.