"comparison between pointer and integer", un coup c'est oui, un coup c'est non..;
Bonjour la communauté,
Si je code ainsi :
Code:
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:
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.