Newsgroup: it.comp.lang.c++
Titolo: lettura float da file

Ho bisogno di leggere da un file testo delle righe di numeri float.
Come si fa a capire quando finisce la riga?
Nel programma ho usato queste istruzioni
char* nomefile=...
ifstream fin(nomefile);
float f;
fin>>f;
ecc.....
ho notato che se finisce la riga continua a leggere la riga successica
c'è un modo per capire che è finita la riga?
Grazie
Alessandro

 fin>>f;
diventa qualcosa come (supponendo t'interessi solo la
prima/prossima riga dell'istream fin):
    string riga;
    if(!getline(fin,riga)) {
        // il file non ha neppure una riga, puoi
        // segnalare errore/anomalia/terminare
    }
    istringstream iss(riga);
    while(iss>>f) {
        // elabora f a tuo piacimento
    }
Alex

 c'è un modo per capire che è finita la riga?
A cosa ti serve sapere dove finisce la riga? Se per ogni riga ci fossero
esattamente lo stesso numero di float allora basterebbe leggerne quel
numero per sapere che la riga è terminata. Se ce ne fossero in numero
variabile, sei sicuro che abbia senso suddividerli in righe? Se si,
allora l'unica possibilità che mi viene in mente è quella di leggere
prima l'intera riga come stringa e poi estrarne i float.
EMG

]


ho trovato getline(...) solo come funzione membro della classe istream
cosa intendi con "string"? char* oppure un oggetto di qualche classe?
grazie
Alessandro

 cosa intendi con "string"? char* oppure un oggetto di qualche classe?
string (per essere precisi, std::string) e` LA classe del C++ standard
che rappresenta le stringhe.
E` quella che ottieni con #include <string> (nota NON string.h che e`
invece un vecchio header file del C; quelli standard del C++ usano solo
un nome, senza .h).
Alex

rispetto allo standard.
uso C++Builder prima versione.
Mi da un sacco di errori:
non trova <stringstream>
poi getline(fin,riga) da errore
could not find a match for std::getline(ifstream,std::basic_string
...
non c'č un modo "piů standard" per fare tutto questo?
Magari anche utilizzando funzioni del C?
grazie
Alessandro

 Magari anche utilizzando funzioni del C?
Certamente, e anche in tanti altri linguaggi, come Java, Visual
Basic, ecc.  Chiedi nei gruppi relativi ai linguaggi che ti interessano,
come it.comp.lang.c, eccetera.
Alex

 #include <stringstream>
Che differenza c'è tra stringstream e strstream?
EMG

funzioni, eccetera, definite dalle librerie standard del C++.
A proposito di namespace, ho visto che tutto funziona anche scrivendo
string a invece che std::string a, allora mi chiedo: e' perche' il
compilatore di default "apre" il namespace std, e per essere sicuri
che funzioni dappertutto bisognerebbe usare sempre std::classe o
using <nome_namespace>?
-- 
Saluti,
 Francesco Cipriani - 
http://village.flashnet.it/~rm03703

using <nome_namespace>?
Questo e` quanto dice lo standard.
Paolo
-----------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------

come it.comp.lang.c, eccetera.
ho messo un annuncio anche sul newsgroup dedicato al C
grazie
ciao
Alessandro

 wrote in message news:387CD9CE...@flashnet.it...


 using <nome_namespace>?
Non "bisognerebbe" ma "bisogna", perche`, spero bene!, anche il
tuo compilatore preferito un giorno o l'altro si avvicinera` allo standard.
Alex


Uh, "nessuna, perche` nessuno dei due header file esiste"?-)
Scusate, il nome dell'headerfile standard e` <sstream>.
Ho visto che esiste un header <strstream> in certe librerie,
ma nello standard non ne trovo traccia.  Credo che abbia a
che vedere con l'uso di array di char invece che stringhe.
Alex

 using <nome_namespace>?
using namespace <nome_namespace>. Esatto. O meglio, è ancora un
comportamento residuo pre-standard che dovrebbe sparire con il passar
del tempo (delle versioni dei compilatori) in modo tale che diventerà
obbligatorio specificare il namespace.
EMG

 ho messo un annuncio anche sul newsgroup dedicato al C
Penso che operare in C possa essere per te la migliore ipotesi,
visto che e` probabilmente l'unico standard supportato dai
compilatori antidiluviani che dici di essere costretto a usare.
Meglio un linguaggio antico, ma a modo suo valido e in effetti
standard, che un linguaggio piu` nuovo del quale pero` tu
saresti costretto a usare strani e geometricamente distorti
sottoinsiemi basati su quali bug e quali limitazioni avessero
una congerie di compilatori storicamente determinati.
Alex

una congerie di compilatori storicamente determinati.
grazie mille dei consigli e susami per il tempo che ti ho fatto
perdere!
Alessandro

posso mettermi a istallare altri compilatori.
Non credo che per quello che tu debba fare ci siano molti problemi,
in ogni caso molto piu` probabilmente al prof. consegnerai tanto i
sorgenti quanto l'eseguibile...
E poi puoi sempre chiedere quali compilatori sono utilizzato
dal docente e dall'assistente.


 posso mettermi a istallare altri compilatori.
Appunto ti sto consigliando di usare l'antico ma solido linguaggio
C.  Mi pare che le tue risposte confermino il suggerimento.
Alex

 posso mettermi a istallare altri compilatori.
Risposta filosofica: allora dě al tuo professore ed al tuo assistente
che il C++ č quello standard non quello che viene compilato sul loro PC
e che se volevano un programma in un linguaggio che non č il C++
avrebbero dovuto precisarlo.
Risposta pratica: china la testa e scrivi come vogliono loro. Purtroppo
in quel piccolo insignificante mondo detengono il potere...
EMG

genere usano il C
Scusa, ma non mi dirai che nei laboratori non c'e' un linux, uno
unix con un gcc installato!


>posso mettermi a istallare altri compilatori.
Cosi' chi esce da questa universita' potra' avere il beneficio di 
"dottore in informatica con la facolta' di compilare programmi solo sui 
PC dei professori che lo hanno istruito..."
scusatemi, ma certe assurdita' accademiche non mi vanno proprio giu'...
-- 
God@Universe#~>shutdown -r,
  . 
darX...@tin.it
      . 
star...@wappi.com
 (GSM SMS)
   . Fido 2:335/241.5     . 
http://darxstar.cjb.net
    . ICQ UIN# 11151997    . Britannia: UO-T2A,Trisinc, Gwydion the Mage
---
 " I don't want to die,
 I sometimes wish I'd never been born at all "
                                    -- the Queen

scusatemi, ma certe assurdita' accademiche non mi vanno proprio giu'...
In realta` queste sono assurdita` degli studenti, perche` il docente di
solito chiede programmi scritti nel linguaggio standard e quindi
compilabili da qualsiasi compilatore standard. Inoltre di solito vengono
forniti gli strumenti necessari (compilatori e/o altri tools), 
generalmente disponibili nei laboratori del corso di laurea...
Spesso poi ci sono alternative freeware da utilizzare a casa.


>Spesso poi ci sono alternative freeware da utilizzare a casa.
Infatti non mi riferivo solo al prof, anche se nel caso specifico pare 
proprio che sia lui l'origine del problema
