Strana lettura da file txt

di il
11 risposte

Strana lettura da file txt

Ciao a tutti.
Voglio fare acquisire, tramite lettura da file txt, una lista di stringhe, composta da nomi e cognomi per poi memorizzarli in una classe, da poter poi essere elaborata tramite un algoritmo per la gestione delle liste. Senonchè, quando la funzione stampa, visualizza la lista, questa mi mostra due stringhe si e due no:
Es lista in file .txt:
Nome1
Cognome1
Nome2
Cognome2
Nome3
Cognome3
Nome4
Cognome4 ecc. ecc.

Il risultato che ottengo è:
Nome2
Cognome2
Nome4
Cognome4 ecc....Dov'è che sbaglio?

Ecco il codice:
void ListaSquadra()

	string temp1;

	int cont=0;
	ifstream mioFile("SquadraA.txt");
	cout<<"\nQuesta e' la squadra A  ";
	while(getline(mioFile, temp1))
	
	{
   
			CompNuovo = new COMPSQUADRA;       
					getline(mioFile,temp1);											
			CompNuovo->NomeComponente=temp1;
					getline(mioFile,temp1);
			CompNuovo->CognomeComponente=temp1;
			cout<<"\n       NomeComponente "<<temp1;
			cout<<"\n      CognomeComponente "<<temp1;
			cout<<"\n\n ";
			                           
			CompNuovo->CompSucc=NULL;      
   
	}
	mioFile.close();
    return;
 }
.

ed ecco la classe:
class COMPSQUADRA
{
public:
	string NomeComponente;
	string CognomeComponente;
	COMPSQUADRA *CompSucc;
};
.

Grazie a chiunque risponderà.

11 Risposte

  • Re: Strana lettura da file txt

    Quante getline ci sono? Perché utilizzi sempre temp1 nella cout?
  • Re: Strana lettura da file txt

    Ciao Oregon.

    Di getline ce ne è solo una e la temp1 l'ho anche usata insieme ad una temp2 , ma il
    risultato era simile...a proposito di getline, posso utilizzarne anche più di una sullo stesso file?
  • Re: Strana lettura da file txt

    Io ne vedo 3 getline !!!

    Ti rifaccio la domanda ... quando scrivi
    
    cout<<"\n       NomeComponente "<<temp1;
    cout<<"\n      CognomeComponente "<<temp1;
    
    pensi che, contemporaneamente, la stessa variabile temp1 possa contenere due dati diversi?
  • Re: Strana lettura da file txt

    La getline è sempre la stessa...al limite se ne vedono due ma è sempre quella.
  • Re: Strana lettura da file txt

    Ma come è sempre la stessa?

    Ci sono tre getline ! Vuol dire che leggi 3 linee dal file sempre nella stessa variabile ...

    Forse non hai ben chiaro l'utilizzo della getline e delle variabili ...
  • Re: Strana lettura da file txt

    In effetti non ho molta dimestichezza con le getline ma la temp1 non dovrebbe acquisire un valore diverso se ripeto la getline su un altra riga del file?
  • Re: Strana lettura da file txt

    Sì ma, ripeto, se esegui queste
    
    cout<<"\n       NomeComponente "<<temp1;
    cout<<"\n      CognomeComponente "<<temp1;
    
    una dopo l'altra, che differenza c'è tra le due temp1 ?

    E comunque ci sono tre getline, lo ripeto, le hai scritto tu! Quindi leggi 3 linee per volta ... nella stessa variabile ...

    Riflettici e modifica il codice ... è semplice ...
  • Re: Strana lettura da file txt

    Ho risolto. Ecco il codice:
    void ListaSquadra()
    {
    	string temp1,temp2;
    
    	
    	ifstream mioFile("SquadraA.txt");
    	cout<<"\nQuesta e' la squadra A  ";
    	while(getline(mioFile, temp1) && getline(mioFile, temp2))
    	
    	{  
        	CompNuovo = new COMPSQUADRA;       			
        	CompNuovo->NomeComponente=temp1; 
    	    CompNuovo->CognomeComponente=temp2;		
    	
    	cout<<"\n       NomeComponente "<<temp1;
    	cout<<"\n      CognomeComponente "<<temp2;
    	cout<<"\n\n ";
    	
                    CompNuovo->CompSucc=NULL; 
              }
    	           mioFile.close();
        return;
     }                   
    
    Però, caro Oregon, quando uno fa delle domande su un determinato argomento o usa, come in questo caso, una sintassi sbagliata, è perchè evidentemente, quello che ha fatto la domanda (io), non lo conosce bene (l'argomento). Comunque l'ho risolto, perchè ho avuto...fortuna, dopo aver fatto un paio di tentativi (appunto tentativi). Altre volte mi hai risposto e mi hai aiutato a risolvere problemi e di questo ti ringrazio, ma se lo scopo di questi forum è il trasmettersi la "conoscenza" perchè non essere più immediati ? Non dico certo, di scrivere il codice ma almeno dare un pò di teoria sull' argomento in modo che uno dopo ne sappia un pò di più di prima e da lì poi arrivare alla soluzione del problema. Comunque grazie ancora e soprattutto non pensare che la mia sia una polemica nei tuoi confronti ma è che mi è già capitato altre volte di trovare (in altri forum e su altre tematiche e, non è il tuo caso) persone spocchiose che rispondevano alle domande con altre domande, lasciando irrisolto il problema.
    Ciao.
  • Re: Strana lettura da file txt

    Frank ... il problema è che la programmazione implica un minimo di impegno e studio.

    Per programmare è necessario avere le "basi minime" e rivolgersi ad un forum per ottenere il codice che non si sa scrivere non è la soluzione, non secondo me.

    E' invece utile ottenere dei suggerimenti su cosa controllare/studiare che non va. E questi suggerimenti te li ho dati. Poi stava a te approfondirli invece di continuare a rispondere come se non ti fosse stato suggerito nulla ... Non si tratta quindi di spocchia ma di metodo di insegnamento e le domande alle domande servono a far riflettere (in genere) chi pone le prime ...

    Fra l'altro, non era un problema di "sintassi" (che è un'altra cosa) ma di cattivo utilizzo di una funzione

    getline (e te l'ho suggerito indicandoti la presenza di troppe getline)

    e della variabile

    temp1 (a cui hai rimediato usando anche una temp2)

    La sintassi è un'altra storia.

    Fra l'altro, nel codice prevedi una "linked list" dato che hai previsto un campo CompSucc che però non usi affatto ... ti suggerisco di usarlo dato che, altrimenti, non potrai più accedere ai dati letti.
  • Re: Strana lettura da file txt

    oregon ha scritto:


    Frank ... il problema è che la programmazione implica un minimo di impegno e studio.
    Sono d'accordo.
    Per programmare è necessario avere le "basi minime" e rivolgersi ad un forum per ottenere il codice che non si sa scrivere non è la soluzione, non secondo me.
    Anche qui sono d'accordo
    E' invece utile ottenere dei suggerimenti su cosa controllare/studiare che non va. E questi suggerimenti te li ho dati.
    Si ma, ripeto, se non ho nessun modo o fonte, se non quello di chiedere a chi ne sa più di me, per avere delle risposte precise, io o chiunque, nelle mie stesse condizioni da ignorante, non fa altro che sbattere la testa. Anche a me non piacciono quelli che vogliono il piatto già bell'è pronto, ma ammetterai che per scrivere un codice che prenda delle stringhe da un file di testo per poi inserirle nelle variabili membro di in una classe non è proprio da uno che il giorno prima ha studiato l' "Hallo world". E' solo che mi sono trovato di fronte ad un problema che non mi si era mai presentato prima.
    Poi stava a te approfondirli invece di continuare a rispondere come se non ti fosse stato suggerito nulla ...
    Ho risposto ai tuoi suggerimenti. In particolare sull' uso della temp1,utilizzata più volte, ti ho risposto (sbagliando perchè appunto non sapevo che la getline si potesse invocare più volte anche con var diverse) ma pensavo che, leggendo una nuova riga, la temp1 prendesse la stringa successiva. Sul fatto poi della stampa di temp1 più volte, là, ti dò ragione, ma ripeto, il problema era la non conoscenza dell'uso della stessa getline, con due var diverse.

    Comunque finiamola qui, se no qualcuno può pensare (sbagliando) che stiamo litigando, mentre invece stiamo solo discutendo amichevolmente.
  • Re: Strana lettura da file txt

    Sì, è solo una normale discussione ma non mi dirai che non ci sono fonti per studiare ... se non sai come funziona la getline una ricerca ti dà mille risultati da studiare

    http://www.cplusplus.com/reference/string/string/getline/

    http://crasseux.com/books/ctutorial/getline.htm

    http://man7.org/linux/man-pages/man3/getline.3.htm

    http://msdn.microsoft.com/it-it/library/2whx1zkx.asp

    ... è che molte volte penso che sia più facile chiedere in un forum che sbattersi nelle ricerche e nello studio (a pensare male si fa peccato ma...)
Devi accedere o registrarti per scrivere nel forum
11 risposte