Suponha que eu tenha o seguinte 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
}
Minha pergunta é: como o sistema verifica entre esses dois? s1
é um objeto enquanto "Apple"
é uma literal de seqüência de caracteres do estilo C.
Tanto quanto sei, diferentes tipos de dados não podem ser comparados. O que estou perdendo aqui?
c++
comparison
c-strings
stdstring
c++-standard-library
Aditya Prakash
fonte
fonte
std::string
partir de uma c-string.Respostas:
É por causa do seguinte operador de comparação definido para
std::string
Isso permite a comparação entre
std::string
e oconst char*
. Assim a mágica!Roubando o comentário de @Pete Becker :
fonte
std::string from the C-style string and compare the two
std :: string objects. É por isso que esse operador está lá: elimina a necessidade desse objeto temporário e a sobrecarga envolvida na criação e destruição dele.