ucze sie od kilku dni nowego jezyka programowania: c++. nowego dla mnie, nie w ogole ;) jest wzglednie prosty do nauczenia, przynajmniej podstawy. podejrzewam ze bardziej zaawansowane rzeczy beda mniej proste. ale to szczegol.
jestem do przodu o to, ze znam calkiem niezle php. skladniowo sa bardzo podobne, choc sa znaczne roznice miejscami. ostatnio zacielem sie na funkcji sprintf(). w php zwraca ona nowy obiekt:
$a = sprintf("tresc %d cos %s tralala", 5, "tam; ");
echo $a;
zwroci nam:
tresc 5 cos tam; tralala
natomiast w c++ sprintf dziala przez referencje:
char bufor[256];
sprintf(bufor, "2 * %d = %d", 5, 10);
spowoduje ze zawartoscia zmiennej bufor bedzie ciag znakow (a dokladniej tablica znakow): 2 * 5 = 10. jako, ze w miejscu w ktorym ucze sie c++ nie mam dostepu do netu, zajelo mi dojscie do tego blisko godzine… ale sie udalo ;). notabene, uwagi wyrzucane przez kompilator sa jak dla mnie, na ta chwile, malo zrozumiale. moze kiedys to sie zmieni ;)
notabene, uzycie sprintf() jest najprostsza metoda do przekonwertowania zmiennej typu liczbowego (integer, float etc) na ciag znakow. uzycie:
char bufor[5];
sprintf(bufor, “%d”, 567);
spowoduje to ze zmienna buforbedzie zawierac napis (tablice znakow) "567".
moze ktos napisac, ze przeciez jest funkcja w stdlib.h itoa(). owszem, jest, ale:
- jest rownie niewygodna w uzyciu co
sprintf()(a nawet ciut bardziej); - nie nalezy do standardu ansi c++, co oznacza, ze np pod linuksem nie jest ona dostepna.
co jak dla mnie powoduje nieistnienie jej (czyli funkcji itoa()).
c++ spodobalo mi sie w miare takze dlatego, ze do tej pory sadzilem (blednie oczywiscie) ze tak jak w c, trzeba recznie deklarowac dlugosci stringow (konkretnie wymiarow tablic znakowych), pilnowac sie zeby po utworzeniu tablicy nie przekroczyc jej zakresu etc. ale w c++ zostala wprowadzona zarowno obsluga typu string (#include <string>), jak i vectorow, list, stosow (stack) jak i wielu innych usprawniaczy. no i oczywiscie mozliwosc programowania obiektowego… :)
