Newsgroup: it.comp.lang.c++
Titolo: Lettura da file

Devo scrivere un programma che legga da file che ha al proprio interno 
su ogni riga un numero ed una stringa.Questi poi devo essere posti in 
una tabella hash.
Mi date una mano a scrivere un pò il codice per la lettura dal file di 
questi due valori?
Grazie

 ha scritto nel messaggio 
news:owlmf.22615$z_6....@tornado.fastwebnet.it...

Devi modificare lo stream di input
_________________________________
#include <fstream>
...
...
char c[10000];
fstream input; //dichiari lo stream input
input.open("nome_del_file.txt", ios::in)
while (input.get(c[carattere]) && carattere <10000) carattere++;
//praticamente ora hai il file dentro l'array.
//naturalmente per la dimensione dell'array il file deve contenere
//meno di 10000 caratteri.
input.clear();
input.close();
...
_________________________________
Non sono un grande esperto di C++,
la mia soluzione potrebbe essere troppo marginale.
Ad ogni modo spero di esserti stato d'aiuto.
un saluto,
---
Clawer... 

clawer ha scritto:

Ti ringrazio però queste info le devo inserire in un nodo di una lista, 
come posso fare?
La struttura del file è questa
111111 Giovanni_Esposito
ci sono tante righe di questo tipo e poichè il numero è univoco lo devo 
inserire come key del nodo

 inserire come key del nodo
epez al tuo proposito ti consiglio di leggere linea per linea il tuo file
linea=input.getline(line,80);
  e di distinguere con un algoritmo apposito il numero telefonico dal nome.
es.
for(i=0; i<5; i++)
numtel=numtel+linea[i];
Per lo sviluppo della tabella di hash lo sviluppo dipende dal tipo di 
hashing che vuoi fare.
Salutamme

 inserire come key del nodo
Facciamo cosě. Io ti scrivo un programmino semplice semplice in C++ 
standard, che fa *grosso modo* quello che chiedi. Tu te lo studi, e se 
trovi qualcosa che non capisci, prima di tutto te lo vai a studiare sul 
manuale.
  #include <string>
  #include <fstream>
  #include <iostream>
  #include <map>
 
  int main()
  {
     typedef std::map< int, std::string > map_t;
 
     std::ifstream in("/percorso/del/file");
 
     int         key;
     std::string value;
 
     map_t data;
 
     while( in >> key >> value )
     {   
        data[ key ] = value;
     }
 
     for( map_t::const_iterator i = data.begin(); i != data.end(); ++i )
     {
        std::cout << (*i).first << ": " << (*i).second << std::endl;
     }
  }
 
 
Max

Max M. ha scritto:

Scusami max ho provato a compilarlo ma non va!
Il visual c++ mi riporta 21 errori andando anche nella libreria xtree e map
Purtroppo non saprei come correggerlo
Mi potresti aiutare

 Mi potresti aiutare
Non vedo come si possa *correggere* un programma che è già conforme alle 
specifiche del C++. Semmai lo puoi modificare per adattarlo alle 
limitazioni di un compilatore che non implementa decentemente lo Standard, 
quale quello che stai usando. (Probabilmente si tratta di una release non 
molto recente del Visusal C++.)
Francamente, però, trovo più ragionevole installare un compilatore più 
moderno. Esistono diversi prodotti gratuiti. Le FAQ ufficiali del gruppo 
offrono alcune indicazioni a riguardo.
Max

Max M. ha scritto:

Grazie per tutto

 offrono alcune indicazioni a riguardo.
http://www.emagsoftware.it/faqcpp.htm#4
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg
The EMG Music page:         
http://www.emagsoftware.it/emgmusic
 

 
http://www.emagsoftware.it/faqcpp.htm#4
Non so se sei d'accordo, ma io aggiungerei anche VC++ Express, che è
l'ultima versione del compilatore della Microsoft (con IDE semplificato,
credo) che per un anno è distribuito gratuitamente (in seguito non si
sa):
http://msdn.microsoft.com/vstudio/express/visualc/download/
Ciao.
-- 
BSD is for UNIX lovers -- linux is for Windows haters.

 
http://msdn.microsoft.com/vstudio/express/visualc/download/
Proprio per questo ("in seguito non si sa") lo tolsi subito dopo averlo 
aggiunto qualche tempo fa.


 aggiunto qualche tempo fa.
OK.
