Zilele astea am aflat de o problemuta pe care ar putea sa o aiba STL-ul in ceea ce priveste implementarea string-ului.
Sa luam urmatorul exemplu :

#include <iostream>
#include <string>

using namespace std;

int main(){
	string s = "test";

	char sir[1] = {0};

	s.append(sir);

	if ( s == "test")
		cout<<"da";
	else cout<<"nu";

	return 0;
}

Ce vrem sa facem ? Avem un string cu un oarecare sir si dorim sa appendam la el sirul format din caracterul 0. Metoda append primeste ca parametru un pointer catre un sir de caractere de unde va citi caractere.
Here’s the catch. Metoda append, apelata doar cu un singur parametru, va citi caractere pana la intalnirea caracterului 0. Evident, sirul char sir[1] = {0}; contine un singur caracter si acela este 0. Prin urmare, metoda append nu va adauga nimic .

Acum sa efectuam o modificare :

#include <iostream>
#include <string>

using namespace std;

int main(){
	string s = "test";

	char sir[1] = {0};

	s.append(sir,sizeof(sir)); // apelam metoda cu 2 parametri

	if ( s == "test")
		cout<<"da";
	else cout<<"nu";

	return 0;
}

Apeland metoda cu 2 parametri, putem specifica cate caractere se vor citi de la pointerul specificat de primul parametru. In cazul nostru, sizeof(sir) , care este egal cu 1. Here’s the interesting thing.
Contrar bunului simt, metoda apelata in acest fel va appenda caracterul 0 la reprezentarea interna a string-ului.

In primul exemplu, s.size() intoarce 4 ( ‘t’ , ‘e’ ,’s’, ‘t’) . In al doilea insa intoarce 5 (‘t’ , ‘e’, ’s’ ,’t’ ,” ) . (*)

Acest lucru poate cauza bug-uri inexplicabile atunci cand se lucreaza cu a doua varianta de apel a metodei, mai ales daca nu se cunoaste modul de functionare. In al doilea exemplu pe ecran se va afisa “nu” . De ce ? Cu toate operatorul “==” este supraincarcat sa verifice caracter cu caracter pana la intalnirea unui “” , prima verificare care se face este cea de dimensiune. Cum cele dimensiuni sunt diferite (*) , == va intoarce false.

Pretty strange, right ?

End of session

February 7, 2010

Is here. Enjoy !

Put your sword in her …

February 5, 2010

Mady my day before exam…

That thing you do

January 29, 2010

rfc 4034

January 24, 2010

e acum la gunoi , pentru ca am mancat shaorma pe el. feels good ;)

Urasc conjunctiile

January 22, 2010

Faci totul sa fie bine. Totul merge bine. Te minunezi cumva de rezultatul neasteptat al situatiei .
Din pacate, la final, ea face conjunctie si o gresala anuleaza tot frumosul de dinainte. Urasc conjunctiile. Atat de categorice… si totusi, atat de destructive…

8 carii

January 18, 2010

eram increzator astazi ca imi repar “singura” carie din gura. mandru de mine si de igiena mea orala, am intrat in cabinet cum intru la seminarul unde prezint tema de 10. numai ca sa aflu ca de fapt am cam 8 carii. mici ce-i drept , in stadiul de puncte, dar … viitoare carii care trebuiesc rezolvate pe viitor.

stateam azi si ma gandeam. o plomba trebuie sa aiba o inaltime minima pentru a putea fi montata corect. nu poti pur si simplu distruge putin caria si sa acoperi micul gol cu ceva pentru ca acel ceva se va desprinde super usor. prin urmare, fie ca rezolv cariile de acum, fie ca le rezolv cand se mai maresc ( daca se maresc , igiena orala limiteaza efectivitatea cariilor ) , e acelasi lucru . oare ?

Realitati

January 15, 2010

Candva.

Realitate. Mentalitatile nu se sting odata cu sistemul.
Realitate. Desi nu recunoastem, inca ne e frica sa vorbim despre lucruri.
Realitate. Desi ne declaram deschisi, suntem mai inchisi ca niciodata.
Realitate. Suntem loviti atat de adanc de prejudecati, incat refuzam sa acceptam lucrurile noi.
Realitate. Ne este frica de schimbare.
Realitate. Ramanem paralizati in prejudecatile celorlalti.
Minciuna. Schimbarea ma va face sa decad in ochii celorlalti.
Minciuna. Sunt o persoana independenta de parerile celor din jur.

Deodata.

Realitate. Dormitul impreuna inainte de casatorie.
Realitate. Sexul inainte de casatorie.
Realitate. Informare despre sexualitate.
Realitate. Prezervativul.
Realitate. Anti-conceptionalele.

Acum.

Minciuna. Privesc lucrurile obiectiv.
Minciuna. Ma adaptez schimbarilor din societate.
Minciuna. Inteleg noua generatie.

Realitate. Raman acelasi desi nu accept. De ce fac asta ?

Promotie de … criza

January 14, 2010

Uneori, 6 banuti pot face diferenta …

not…

me on twitter

January 13, 2010

i was convinced by someone to join twitter … you can find me here