Visualizzazione dei risultati da 1 a 5 su 5

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2014
    Messaggi
    35

    [c++]accedere a una stringa memorizzata sul file txt

    Ciao ragazzi,da poco ho ripreso a programmare e ho deciso di farlo scrivendo un software utile per il mio lavoro, ho creato quindi una lista in C++ che mi stampa le caratteristiche di un oggetto in un file txt, vorrei che sempre da un file txt mi prendesse il nome dell'oggetto.

    Per fare queste due cose ho implementato le librerie string e fstream, ma fstream ho notato che non mi permette di prendere una parola nella lista a mio piacimento leggendo il file riga per riga, vorrei invece che lo facesse.

    Ho pensato di memorizzare il contenuto del file in un array, ma questo avrebbe bisogno di una dichiarazione della dimensione prima e quindi mi sembra inutile.

    Il codice che ho scritto è questo, abbiate pazienza se c'è qualche errore, ma non sono praticissimo, mi sto applicando.
    codice:
    #include <iostream>
    #include <fstream>
    #include <string>
    
    using namespace std;
    
    /* ***************************************************
    struttura dinamica dove memorizzare il risultato
    */
    struct modello {
        string nome;
        double x;
        double y;
        int amount;
        modello *next;
    };
    
    modello *il=NULL;
    
    void inserisciintesta(modello *&il,modello *nuovo) {
        nuovo->next=il;
        il=nuovo;
    }
    
    void inserisciincoda(modello *&il,modello *nuovo) {
        modello *ultimo=NULL;
        if (il==NULL) {
            inserisciintesta(il,nuovo);
        }
        else {
            ultimo=il;
            while (ultimo->next!=NULL) {
    
                ultimo=ultimo->next;
                ultimo->next=nuovo;
            }
        }
    }
    
    /* ****************************************************************
    apertura file contenente i nomi dei modelli */
    
    int lettura_file() {
        ifstream f("names.txt"); //nome del file da aprire, si può mettere anche il percorso (es C:\\file.txt)
        string s;
    
        if(!f) {
            cout<<"Il file non esiste!";
            return -1;
        }
    
        int i=1;
        while(f.good()) //fino a quando c'è qualcosa da leggere ..
        {
            getline(f, s); //legge tutta la riga dal file e la mette nella variabile s
            cout<<i<<"\t"<<s<<endl;
            i++;
        }
    
        cout<< 2;
        return 0;
    }
    
    int main () {
        int b;
        modello *nuovo=NULL;
    
        string namefile;
        string formato=".txt";
    
        cout<<"come nomino il file?"<<endl;
        cin>>namefile;
        namefile+=formato;
    
        ofstream SaveFile(namefile.c_str());
    
        cout<<"inserisci numero di progetti d'aggiungere"<<endl;
        cin>>b;
    
        for (int i=0; i<b; i++) {
            nuovo=new modello;
            cout<<"nome"<<endl;
            cout<<lettura_file();
    
            cin>>nuovo->nome;
            SaveFile<<"Modello:\t"<<nuovo->nome<<endl;
            cout<<"misura lato x"<<endl;
    
            cin>>nuovo->x;
            SaveFile<<"X="<<nuovo->x<<endl;
    
            cout<<"misura lato y"<<endl;
    
            cin>>nuovo->y;
            SaveFile<<"Y="<<nuovo->y<<endl;
    
            cout<<"quantità"<<endl;
    
            cin>>nuovo->amount;
            SaveFile<<"quantità="<<nuovo->amount<<endl;
    
            nuovo->next=NULL;
    
            inserisciincoda(il,nuovo);
    
            cout<<endl;
        }
        return 0;
    }
    Ultima modifica di MItaly; 12-10-2016 a 09:30 Motivo: Sistemato codice

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.