Angenommen, ich habe den folgenden Code:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std; // or std::
int main()
{
string s1{ "Apple" };
cout << boolalpha;
cout << (s1 == "Apple") << endl; //true
}
Meine Frage ist: Wie prüft das System zwischen diesen beiden? s1
ist ein Objekt, während "Apple"
es sich um ein Zeichenfolgenliteral im C-Stil handelt .
Soweit ich weiß, können verschiedene Datentypen nicht verglichen werden. Was fehlt mir hier?
c++
comparison
c-strings
stdstring
c++-standard-library
Aditya Prakash
quelle
quelle
std::string
aus einem C-String initialisieren .Antworten:
Dies liegt an dem folgenden Vergleichsoperator, für den definiert wurde
std::string
Dies ermöglicht den Vergleich zwischen
std::string
undconst char*
. So die Magie!Den Kommentar von @Pete Becker stehlen :
quelle
std::string from the C-style string and compare the two
std :: string-Objekte erstellen. Aus diesem Grund ist dieser Operator vorhanden: Er eliminiert die Notwendigkeit für dieses temporäre Objekt und den Aufwand für dessen Erstellung und Zerstörung.