erlug
[Top] [All Lists]

Re: R: [Erlug] C++

To: erlug@xxxxxxxxxxxxxx
Subject: Re: R: [Erlug] C++
From: "Ivan Sergio Borgonovo" <mail@xxxxxxxxxxxxxxx>
Date: Tue, 12 Mar 2002 23:57:56 +0100
On 12 Mar 2002 at 22:50, WolfMan wrote:

> Grazie per la reference, già prontamente scaricata, non è che non voglia
> usare string e la stl, solo che tutte le funzioni per gli stream su file
> hanno come parametro di ingresso un char *, dovrei addirittura aprire
> uno stream su stringa anche per usare i parametri forniti dalla funzione
> main [main(int argc char *argv[])], ora usare la funzione c_str di
> string non è una forzatura??(naturalmente la mia è solo una domanda).

Dipende da che cosa ci devi fare...

In fondo non credere che c_str() faccia niente di tremendo...
restituisce un puntatore... probabilmente una volta compilato il tutto
si risolve in un caricamento dello stack e/o in un mov.

Se hai 3 righe di codice E sei MOLTO attento a non sbordare dai buffer,
amen...

Poi c'è gente che programma allegramente in C... il C++ mica è una
prescrizione medica.

Un po' di considerazioni on the top of my mind

1)  Il tuo programma prende input a manetta da stdio per i nomi di file,
    non fa quasi niente ed esce...
    punto critico fstream( const char *filename );

    L'input dei nomi di file rappresenta una buona % del lavoro che fa il
    tuo programma. Ti allochi il peggio che ti può capitare come lunghezza:
    #include <limit.h> o #include <bits/posix1_lim.h> TRONCHI comunque
    qualsiasi cosa che arriva più lunga e via...

2)  il tuo programma non è molto impegnato sull'acquisire nomi di files 
    quanto a leggerli/processarli...
    punto critico istream &read( char *buffer, streamsize num ); e compari

    Ovvio che qua entrano molto in gioco le strategie di
    lettura/scrittura/processing etc... Auguri...

    Come al solito se il file è piccolo buffer grosso te lo ciucci tutto...
    pace e amen...

    Ma anche una volta che lo hai in memoria e lo devi processare... come
    fai a inserire a metà una stringa (inteso char[])? Lasci li la prima
    metà, allochi altra memoria in coda al buffer, sposti l'altra metà, ci
    infili i char[].

    Quante volte dovrai allargare il buffer? di quanto? Ha una struttura
    interna che ne faciliterebbe la lettura casuale? e via discorrendo...

Queste cose SI FANNO sia in C che in C++...

vuoi fidarti della gestione della memoria più standard... OK usi le
STL... o ti scrivi il tuo gestore di memoria in C

non vuoi... ti scrivi un Allocator... o ti scrivi il tuo gestore di
memoria in C

Auguri...


--
Salve
Ivan Sergio Borgonovo
http://www.webthatworks.it/
find /home -iname "*spam*" | \
while read s; do rm -fr "$s";done && \
talk world




<Prev in Thread] Current Thread [Next in Thread>