c++ erreur de compilation: ISO C++ forbids comparaison entre pointeur et entier
Je cherche un exemple de Bjarne Stroustrup du C++ livre, troisième édition. Alors que la mise en œuvre d'une simple fonction, j'obtient l'erreur de compilation:
error: ISO C++ forbids comparison between pointer and integer
Ce qui pourrait être la cause? Voici le code. L'erreur est dans le if
ligne:
#include <iostream>
#include <string>
using namespace std;
bool accept()
{
cout << "Do you want to proceed (y or n)?\n";
char answer;
cin >> answer;
if (answer == "y") return true;
return false;
}
Merci!
- y dans votre code est une chaîne littérale (guillemets doubles)
""
, un char n'est pas seulement (guillemets simples)''
- Vérifiez votre saisie. L'exemple de la Stroustup a
char answer = 0;
etif (answer == 'y') return true;
.
Vous devez vous connecter pour publier un commentaire.
Vous avez deux façons de résoudre ce problème. Le meilleur moyen est d'utiliser:
(au lieu de
char
). L'autre moyen possible pour réparer c'est:(note les guillemets simples au lieu du double, ce qui représente une
char
constante).Un littéral de chaîne est délimitée par des guillemets et de l'est de type char* pas de char.
Exemple:
"hello"
Ainsi, lorsque vous comparer un char, un char*, vous obtiendrez la même erreur de compilation.
Pour corriger l'utilisation d'un char littéral qui est délimitée par des guillemets simples.
Exemple:
'c'
Vous avez besoin de la changer ces guillemets doubles en chambres simples.
c'est à dire.
if (answer == 'y')
retournetrue
;Voici quelques informations sur les Littéraux de Chaîne en C++:
http://msdn.microsoft.com/en-us/library/69ze775t%28VS.80%29.aspx
char[]
(un groupe de personnages), les guillemets simples est un seulchar
."y" est une chaîne de caractères ou un tableau/pointeur. 'y' est un char/type intégral
Vous devez vous rappeler d'utiliser les guillemets simples pour char constantes.
Donc, utiliser
if (answer == 'y') return true;
Plutôt que
if (answer == "y") return true;
J'ai testé et ça marche