On 11 Mar 2002 at 15:51, Alessandro Forghieri wrote:
> Saluti,
> > Dipende dal contesto... prova a tenere d'occhio 5000 char* in un
> > progetto da 100.000 line di codice.
> Se proprio si vuole, penso che snprintf prenda anche una string con
> cast automatico.
cast automatico... che brutta roba!
Così non scrivi in C ma in Visual Basic ;)
Anche qua bisogna vedere l'implementazione.
Se si tratta di una string nel senso di <string> già qualche cosa te la
tiri dentro (a proposito di #include).
C'è da dire che sia i compilatori che le implementazioni delle STL non
sono proprio deficenti e se la roba non ti serve NON viene compilata.
> > Una volta che cominci a scrivere in C++ switchare da uno stile di
> > programmazione all'altro può essere estremamente controproducente...
> Beh, dire che il chiamare *una* funzione di libreria standard sia cambiare
> stile di programmazione, mi sembra un po' estremo.
<string> e roba tipo atoi, printf, char* si trattano in maniera MOLTO
diversa.
Io cercherei di limitare lo scambio di contenuti tra buffer e string al
minimo possibile e in posti molto ben delimitati del codice... pena
incorrere in qualche buffer overflow per distrazione e altre facezie da
una parte e in overhead inutile dall'altra se ai a che fare con roba di
dimensioni piccole (leggasi: non ti serve la gestione della memoria...
e altre facezie appunto).
> > a guardarci bene non è nemmeno tanto complicato:
> > ostringstream string_ulto;
> > string s;
> > float f=12.7;
> > string_ulto << f;
> > s=string_ulto.str()
> Che se hai gia' importato per i tuoi iostream e compani va bene...
> ma se e' fatto all'unico scopo e' la conversione di uno (o piu') numeri in
> stringa,
> sembra un eccesso di zelo.
L'eccesso di zelo non è reato ;)
Il tirarsi su iostream e string (ovvio che se vuoi le string e non i
char* quella ti tocca includerla) potrebbe risultare meno drammatico di
quanto sembri [*], ma è MOOOLTO che non faccio test di questo genere...
e quando li ho fatti la cosa giocava MOOOLTO a favore del C/C style
rispetto al C++.
Adesso mi sa che se scrivi hello world in C e C++ l'assembly esce
uguale ;) cosa non indifferente visto che ti tiri dentro una cosa
portentosa tipo cout rispetto a una roba tipo print :)
[*] forse il carico più grosso è del compilatore più che durante
l'esecuzione.
e no... non credo che sia una buona idea riscrivere il kernel in C++, a
meno che volete fermarvi alla 2.4.19-pre2 per i prossimi 5 anni
e si... qua siamo ormai very OT e al limite del cazzeggio stile
Buffy... e non tirate fuori la storia dello script misterioso per
giustificarvi ;)
--
Salve
Ivan Sergio Borgonovo
http://www.webthatworks.it/
|