Misalkan saya memiliki kode berikut:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std; // or std::
int main()
{
string s1{ "Apple" };
cout << boolalpha;
cout << (s1 == "Apple") << endl; //true
}
Pertanyaan saya adalah: Bagaimana sistem memeriksa di antara keduanya? s1
adalah obyek sementara "Apple"
adalah string yang C-gaya literal.
Sejauh yang saya tahu, tipe data yang berbeda tidak dapat dibandingkan. Apa yang kulewatkan di sini?
c++
comparison
c-strings
stdstring
c++-standard-library
Aditya Prakash
sumber
sumber
std::string
dari c-string.Jawaban:
Itu karena berikut operator perbandingan yang ditentukan untuk
std::string
Ini memungkinkan perbandingan antara
std::string
danconst char*
. Demikianlah keajaiban!Mencuri komentar @Pete Becker :
sumber
std::string from the C-style string and compare the two
std :: string objek Itulah sebabnya operator ini ada di sana: ia menghilangkan kebutuhan akan objek sementara dan overhead yang terlibat dalam menciptakan dan menghancurkannya.