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? s1es 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::stringdesde una cadena c.Respuestas:
Se debe al siguiente operador de comparación definido para
std::stringEsto permite la comparación entre
std::stringy elconst char*. ¡Así la magia!Robando el comentario de @Pete Becker :
fuente
std::string from the C-style string and compare the twostd :: 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.