File e scansione riga [stringa]

di il
16 risposte

File e scansione riga [stringa]

Ciao!
Mi affaccio da poco al c++ e alla OOP e sto incontrando difficoltà, in particolare non ho dimestichezza con la manipolazione di stringhe.

Ho il seguente problema: dato un file in lettura, del tipo:

nome1 cognome1 numero
numero1 numero2 .. numero n
nome2 cognome2 numero
..

devo fornire in uscita
<nome cognome media_numeri>
per ogni persona.

Ho pensato di scandire il file tramite un ciclo, salvare ogni riga in una variabile stringa, separare la stringa e salvarla in uno o più vettori per poi stampare a video quanto richiesto.
Il mio problema però è che non so come si faccia a cercare le parole in una stringa
Per semplicità, allego solo una piccola parte di codice scritto, arrivato qui non so come proseguire:

ifstream name;
string stringa;
[...]
while (!name.eof()){
getline(name,stringa);
...

scusate per eventuali errori di formattazione, mi sono appena iscritto.

16 Risposte

  • Re: File e scansione riga [stringa]

    Strtok con lo spazio e atoi

    http://www.cplusplus.com/reference/cstring/strtok
    http://www.cplusplus.com/reference/cstdlib/atoi

    Comunque se non sai programmare hai scelto il linguaggio sbagliato
  • Re: File e scansione riga [stringa]

    Perché leggi da file l'intera riga e nom campo per campo?
  • Re: File e scansione riga [stringa]

    Non sto capendo come fare.
    Sto provando con gli operatori stringstream ma nulla. Non capisco se c'è un modo, a partire da una variabile di tipo string, di separare quest'ultima non sapendo da quante parole è composta ogni riga.
    Quello che volevo fare è leggere riga per riga e a seconda che l'indice di riga sia pari o dispari di effettuare operazioni diverse, tramite il metodo getline() che però restituisce una stringa.

    E per risposta all'altro post, ho già studiato il c..
  • Re: File e scansione riga [stringa]

    Hai risposto a me?
  • Re: File e scansione riga [stringa]

    Per quanto riguarda le difficoltà di programmazione ho scritto a tutti, al commento precedente che mi diceva che ho scelto il linguaggio scelto per cominciare non è il c++.
    Ragazzi per favore aiuto, è da ieri che sono fermo a questo punto e pur smanettando non riesco a trovare soluzioni
  • Re: File e scansione riga [stringa]

    Hai letto il mio suggerimento o no??
  • Re: File e scansione riga [stringa]

    Prova il suggerimento di Oregon con fscanf

    Per il resto il consiglio è sempre lo stesso: se sai il C passa a Java o C# per la programmazione ad oggetti. Il C++ si usa solo in casi particolari, se le difficoltà sono già grandi su questi problemi...
  • Re: File e scansione riga [stringa]

    Devo usare necessariamente il c++, il corso universitario è in c++ e poso usare solo quello, non posso usare nemmeno il linguaggio c.
  • Re: File e scansione riga [stringa]

    Inoltre Weierstrass non capisco perché ti ostini a consigliarmi di lasciar stare il c++. Nessuno nasce con conoscenze e sono consapevole delle difficoltà che incontrerò nell'imparare ad usare il linguaggio, non credo sia tua competenza giudicarmi. Per favore limitati solo a rispondere alle domande che vengono poste o non rispondere affatto, grazie.

    Oregon ti chiedo scusa ma non ho capito cosa intendi
  • Re: File e scansione riga [stringa]

    Usa l'operatore >> da file

  • Re: File e scansione riga [stringa]

    nonsoprogrammare ha scritto:


    Inoltre Weierstrass non capisco perché ti ostini a consigliarmi di lasciar stare il c++. Nessuno nasce con conoscenze e sono consapevole delle difficoltà che incontrerò nell'imparare ad usare il linguaggio, non credo sia tua competenza giudicarmi. Per favore limitati solo a rispondere alle domande che vengono poste o non rispondere affatto, grazie.
    Chiaro che sei obbligato per l'università, potevi anche scriverlo subito. Non c'è nessuna voglia di giudicare, il primo post era appunto un suggerimento, un altro utente ti ha suggerito un'altra strada. Per la soluzione completa ci sono i vecchi topic del forum, quello che chiedi è un problema ricorrente, così come è ricorrente spazientirsi invece di provare a scrivere codice in base ai suggerimenti. In bocca al lupo
  • Re: File e scansione riga [stringa]

    Forse ce l'ho quasi fatta, vi faccio vedere la funzione che ho definito e poi vi spiego cosa stampa:
    
    void simpleReport(char name[100]){
        string line,nome,cognome;
        ifstream file;
        stringstream is;
        float media=0.0,vect[20];
        int  j=0,n;
        file.open(name,ios::in);
        while (!file.eof()){
            getline(file,line);
            is << line;
            is >> nome;
            is >> cognome;
            is >> n;
            getline(file,line);
            is << line;
            while(j<n){
                is >> vect[j];
                media=media+vect[j];
                j++;
            }
        j=0;
        media=media/float(n);
        cout<<nome<<" "<<cognome<<" "<<media<<endl;
        }
        file.close();
    }
    
    Ora quello che fa è stampare sempre lo stesso nome e cognome e un numero random per quanto riguarda la media.
    Credo che il vettore dove volevo salvare i valori non venga mai definito.
  • Re: File e scansione riga [stringa]

    Intanto usa i tag code per postare codice nel forum o non si capisce nulla.

    Poi non capisco perché usi ancora la getline.

    E infine sì mancano gli array dove memorizzare i dati
  • Re: File e scansione riga [stringa]

    Uso la getline perché ho difficoltà nel manipolare stringhe che vengono lette da file, e il corso prevede inoltre che sappia manipolarle.
    Per quanto riguarda l'array, in che senso manca? L'ho dichiarato, fatto operazioni ma a quanto pare non vengono eseguite come vorrei..
Devi accedere o registrarti per scrivere nel forum
16 risposte