PDA

Visualizza la versione completa : [C++] Manipolazione di file


folk3n
01-02-2006, 15:40
salve a tutti, mi servirebbe aiuto per capire cosa c' che non va in questo programma:


#include<iostream>
#include<fstream>
using namespace std;
main(){
ofstream fout("text.txt");
fout<<"45 56";
fout.close();
if stream fin("text.txt");
fin>>a>>b;
fin.close();
cout<<b;
system("pause");
return 0;
}

io uso Dev-C++ 4.9.8.0 e se lo eseguo mi viene segnalato questo errore : "parse error before `fin'" e mi si evidenzia questa riga di codice

if stream fin("text.txt");
sapete dirmi dove ho sbagliato??? :confused:
grazie a tutti
saluti :ciauz:

folk3n
01-02-2006, 15:44
aggiungo inoltre che l'output di questo programmino 56, infatti tutto il codice un esempio che ho trovato in internet per capire come funzionano i file in c++.

colgo inoltre l'occasione per chiedere se qualcuno mi sa dare una spiegazione a questa riga di codice:


int n=33;
int& r=n;

perch non riesco a capire cosa fa. grazie ancora!!! :D :dh:

newbie
01-02-2006, 18:37
Per quanto riguarda il syntax error, credo che "if stream" vada scritto senza lo spazio (ifstream un tipo di dato, che indica uno stream di input basato su file).
La faccenda della & mi abbastanza nuova, ma piuttosto accattivante. Trovi qualcosa a propositoqui (http://www.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/13Riferimenti.html).
Praticamente, in C++ esistono i "riferimenti", che sostituiscono i puntatori, ma permettono di fare cose molto pi interessanti (o meglio, terrificanti! :oVVoVe: ). Ad esempio, supponendo di creare una variabile intera accessibile tramite puntatore,

Nel tuo caso, le due righe dovrebbero essere equivalenti a


int n = 33;
int *r = &n;




int n = 33;
int& r = n;
//r si pu trattare praticamente come un int
r = 44;
//ora anche n = 44 :oVVoVe:

folk3n
02-02-2006, 10:29
t ringrazio 1 casino newbie! il link mi torna molto utile, grazie ancora.
x x quanto riguarda l'esempio in se, il 44 non centra.
te lo scrivo tutto:


//determinare l'output

int n=33;
int& r=n;
--n;
cout<<r;

//soluzione: 32

questi sono esercizietti del cacchio che ci danno al corso di ingegneria informatica, che servono solo a farti beccare dei gran guzzi e nn ti insegnano niente!!! :dh:
guarda questo invece:


//determinare l'output

int n=33;
int& r=n;
cout<<(&r==&n);

//soluzione: 1

sai spiegarmi xch salta fuori 1??? se c riesci 6 il Dio indiscusso d C++ :D

newbie
02-02-2006, 12:10
guarda questo invece:


//determinare l'output

int n=33;
int& r=n;
cout<<(&r==&n);

//soluzione: 1

sai spiegarmi xch salta fuori 1??? se c riesci 6 il Dio indiscusso d C++ :D

In questo (http://www.cs.nott.ac.uk/~pni/Papers/Tutorials/C++/ref-vs-ptr.html) sito ho trovato la risposta:

"A reference to a variable is another variable (another name) for the same address. References are basically synonyms."

C' da mettersi le mani nei capelli! In pratica, dichiarando r, hai creato un... sinonimo di n, nel senso che, da quanto ho capito, i riferimenti in C++ si usano come i puntatori ma non lo sono: sono dei veri e propri sinonimi. Con i puntatori avresti due variabili di tipo diverso (n intera, e r puntatore), mentre con i riferimenti hai proprio :oVVoVe: due nomi per la stessa variabile :oVVoVe:
Nel tuo caso, quindi, r e n rappresentano la stessa variabile, e quindi hanno lo stesso indirizzo o, se preferisci, indirizzi uguali.

Credo quia :confused:absurdum.:confused:

Samuele_70
02-02-2006, 12:50
Originariamente inviato da folk3n
t ringrazio 1 casino newbie! il link mi torna molto utile, grazie ancora.
x x quanto riguarda l'esempio in se, il 44 non centra.
te lo scrivo tutto:


//determinare l'output

int n=33;
int& r=n;
--n;
cout<<r;

//soluzione: 32

questi sono esercizietti del cacchio che ci danno al corso di ingegneria informatica, che servono solo a farti beccare dei gran guzzi e nn ti insegnano niente!!! :dh:
guarda questo invece:


//determinare l'output

int n=33;
int& r=n;
cout<<(&r==&n);

//soluzione: 1

sai spiegarmi xch salta fuori 1??? se c riesci 6 il Dio indiscusso d C++ :D

Nulla di trascendentale (&r==&n) mostra il risultato
della comparazione dei rispettivi indirizzi di 'r' e 'n'
che nel tuo caso puntano alla stessa varibile, quindi
logico che il risultato sia 1 (true).

folk3n
02-02-2006, 14:55
si effettivamente hai ragione Samuele_70, non eccessivamente complicato. quello che non capisco la differenza tra

int& r=n; e
(&r==&n) io l'ho capito cos:
in
int& r=n; & usato per creare un riferimento a n, quindi qls modifica fatta su n si riperquote su r e viceversa, mentre invece
(&r==&n) in questo caso con & indica l'indirizzo di memoria di r e di n, e fa il paragone. cos??? :confused:

newbie
02-02-2006, 16:41
Risposta eeeeeeeeesatta! :D

Post come questi dimostrano che non si finisce mai di imparare... fino ad ora conoscevo solo i puntatori.

folk3n
02-02-2006, 16:56
spettacolo!!! finalmente l'ho capito...cmq ne ho tantissimi d sti esempietti contorti e da quel che ho visto sono dei rompicapo anche per gente che macina gi un p di c++ :D stai pur sicuro che ne poster altri xch avr sicuramente bisogno di un ulteriore aiuto :cry: :dh:
grazie ancora...siete stati chiari e veloci nel rispondere :D
saluti :ciauz:

newbie
02-02-2006, 17:38
grazie ancora...siete stati chiari e veloci nel rispondere :D
saluti :ciauz:

Preghe! Se non ci si aiuta tra di noi... chi ci deve aiutare, lo zio Bill?

P.S.: Comunque il C++ non smetter mai di stupirmi...

Loading