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;
}