char slowo[5]="home" // string slowo="home"

0

dlaczego w tym przykładzie przy porównywaniu typów char np;

char slowo[5]="home";
strcmp(slowo,"walek");

Musimy używać funkcji strcmp() ? - bo nazwa tablicy znaków char, wskaźnik typu char oraz literał łańcuchowy ujęty w nawiasy są traktowane jako adresy pierwszego znaku łańcucha. Pytanie dlaczego przy klasie string można używac takiego porównania:

string slowo="home";
slowo!="walek";

? dlaczego klasa string pozwala na takie porównanie ? czy przy stringu znaki ujęte w cudzysłowy nie są widziane jako adresy ?

0

Yyyyyyy..... Z prostego powodu, który napisałeś? Bo tablice to... tablice. A stringi to obiekty klas z przeladowanym operatorem porownania ? O.o

0
string slowo="home";

to powoduje wywołanie konstruktora

string::string(const char*)

a to

slowo!="walek";

operatora

bool operator !=(const string&, const char*)

1 użytkowników online, w tym zalogowanych: 0, gości: 1