Comment faire pour comparer des chaînes de caractères
J'ai voulu comparer une chaîne sans réellement définir l'un d'entre eux comme une chaîne de caractères, quelque chose comme cela,
if (string == 'add')
Dois-je déclarer 'add'
comme une chaîne de caractères ou est-il possible de comparer d'une façon similaire?
- Quel est le type de
string
? Est-ce une C++std::string
objet, ou tout simplement unconst char*
? - awnser est bon. Aussi la peine de mentionner que d'un string ou char séquence littérale, doit être joint à
"
(guillemets doubles), les apostrophes sont pour un seul char de littéraux.
Vous devez vous connecter pour publier un commentaire.
En C++ de la classe std::string met en œuvre la les opérateurs de comparaison, de sorte que vous pouvez effectuer la comparaison à l'aide de
==
comme vous pouvez attendre:Lorsqu'il est utilisé correctement, la surcharge d'opérateur est un excellent C++ fonctionnalité.
string
est unstd::string
objet, cela va fonctionner, mais alorsstrcmp()
serait pas ont travaillé. Qui est-il? Je meurs d'envie de savoir!:)
char*
!if( strcmp(string.c_str(),"add")==0 ) {...}
serait de travailler.if (strcmp(string, "add") == 0) { ... }
travaillé.string
est unchar*
, auquel cas c'est la mauvaise réponse. J'espérais Anon permettrait de préciser que.string
est unchar*
? Que dois-je faire?Vous devez utiliser
strcmp
.strcmp()
est une fonction C qui prend des pointeurs surconst char*
comme arguments. Il fonctionne dans ce cas, parce que lastd::string
objet est convertie dans unconst char*
, mais c'est pas la meilleure façon de faire les choses en C++std::string
ne pas convertir implicitement àconst char*
, vous devez appelers.c_str()
pour que. Mais en fonction de la question ", sans définir soit comme un string",string
n'est pas unstd::string
pour commencer.Vous pouvez utiliser
strcmp()
: