Supposons que j'ai le code suivant:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std; // or std::
int main()
{
string s1{ "Apple" };
cout << boolalpha;
cout << (s1 == "Apple") << endl; //true
}
Ma question est: comment le système vérifie-t-il entre ces deux? s1
est un objet while "Apple"
est un littéral de chaîne de style C.
Pour autant que je sache, différents types de données ne peuvent pas être comparés. Qu'est-ce que j'oublie ici?
c++
comparison
c-strings
stdstring
c++-standard-library
Aditya Prakash
la source
la source
std::string
partir d'une chaîne c.Réponses:
C'est à cause de l' opérateur de comparaison suivant défini pour
std::string
Cela permet la comparaison entre
std::string
etconst char*
. Ainsi la magie!Stealing the Becker @Pete commentaire de »:
la source
std::string from the C-style string and compare the two
objets std :: string. C'est pourquoi cet opérateur est là: il élimine le besoin de cet objet temporaire et les frais généraux impliqués dans sa création et sa destruction.