Supongamos que tengo el siguiente código:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std; // or std::
int main()
{
string s1{ "Apple" };
cout << boolalpha;
cout << (s1 == "Apple") << endl; //true
}
Mi pregunta es: ¿Cómo verifica el sistema entre estos dos? s1
es un objeto mientras que "Apple"
es un literal de cadena de estilo C.
Que yo sepa, no se pueden comparar diferentes tipos de datos. ¿Que me estoy perdiendo aqui?
c++
comparison
c-strings
stdstring
c++-standard-library
Aditya Prakash
fuente
fuente
std::string
desde una cadena c.Respuestas:
Se debe al siguiente operador de comparación definido para
std::string
Esto permite la comparación entre
std::string
y elconst char*
. ¡Así la magia!Robando el comentario de @Pete Becker :
fuente
std::string from the C-style string and compare the two
std :: string objects. Es por eso que este operador está ahí: elimina la necesidad de ese objeto temporal y la sobrecarga involucrada en crearlo y destruirlo.