Newsgroup: it.comp.lang.c++
Titolo: Gestione files

Salve a tutti, studio da un paio d'anni il C++, quindi le mie conoscenze 
sono molto limitate e si basano solamente sugli applicativi da console; per 
intenderci, ancora non so bene cosa sia una classe.
Ogni tanto naturalmente mi diverto a scibacchiare qualche programmino 
inutile, come penso facciano tutti; ultimamente mi č venuto in mente di 
creare un prog che gestisca una serie di dati numerici, avrei perņ 
intenzione di memorizzare questi dati su file in maniera tale da 
preservarli. Il mio unico problema infatti sta proprio sulla gestione dei 
files: so solamente pochissime cose, come scrivere una stringa in un file di 
testo, mentre a me servirebbe sapere come memorizzare un tipo di dato che 
non sia una stringa in un file. I tipi di dati che dovrei memorizzare vanno 
da record a semplici interi, sostanzialmente mi serve sapere come farne 
l'input/output in maniera tale da poterli gestire. Vorrei fare del file una 
sorta di RAM alternativa.
Scusate per la domanda probabilmente banale, ma č da un paio di settimane 
che cerco su libri e in rete ma ancora non ho trovato una risposta.
Grazie per l'aiuto. 

 
è un po' complicato da spiegare, percui googla "Serialization" che è il 
nome tecnico dell'argomento che ti serve.
-- 
MSN: sirpsycho_78 -at- hotmail dot com

 nome tecnico dell'argomento che ti serve.
Uhm... a quanto pare la cosa è più complicata del previsto, in pratica se ho 
capito bene la serializzazione permette appunto di trasferire i dati dalla 
memoria centrale al file e viceversa... Spero di capire come fare o_O
Intanto grazie per l'aiuto!

 nome tecnico dell'argomento che ti serve.
beh, ad uno che ti dice che non sa cosa siano le classi e che non le ha 
usate e non le vuole usare mi pare che sia fuori luogo parlare di 
serialisation.
Tommaso

 
e di cosa dovrei parlargli allora?


 e di cosa dovrei parlargli allora?
Semplicemente mi potevi dire che non c'era altra soluzione se non quella di 
servirsi delle classi e mi sarei rassegnato (per ora). Comunque grazie, se 
non altro ho capito che il problema è meno banale di quanto pensassi.

 
prego!


 l'input/output in maniera tale da poterli gestire.
Apri il file in modalita' binaria (cioe' non testuale), e scrivi i dati 
con le primitive di input/output non formattato.
Se usi gli stream del C (in <cstdio>), puoi usare fwrite e fread.
Puoi usare anche gli stream del C++.
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila

 Puoi usare anche gli stream del C++.
Mi potresti fare un esempio? Magari un input/output di una variabile di 
qualche tipo. Grazie!


Per esempio il seguente programma scrive un file:
#include <cstdio>
int main() {
	struct { int a; double b; } s = { 123, 23.456 };
	int c = 'y';
	FILE * f = fopen("dati.dat", "wb");
	if (! f) return 1;
	fwrite(&s, sizeof s, 1, f);
	fwrite(&c, sizeof c, 1, f);
	fclose(f);
	return 0;
}
Mentre il seguente programma lo rilegge e lo stampa sullo standard output:
#include <cstdio>
int main() {
	struct { int a; double b; } s;
	char c;
	FILE * f = fopen("dati.dat", "rb");
	if (! f) return 1;
	fread(&s, sizeof s, 1, f);
	fread(&c, sizeof c, 1, f);
	fclose(f);
	printf("%d %f %c\n", s.a, s.b, c);
	return 0;


 Per esempio...
[CUT]
Grazie mille! Proprio quello che mi serviva! 

, č una spamtrap
Usate zello <at> despammed <dot> com

 Ma su it.comp.lang.c++ non si potrebbe scrivere codice c++, e non c?
Ma ERA codice C++ valido!
In effetti, a parte la direttiva di inclusione, era anche codice C valido.
Comunque il tuo codice, a differenza del mio, scrive il file in formato 
testuale, mentre era stato chiesto "a me servirebbe sapere come 
memorizzare un tipo di dato che non sia una stringa in un file" e poi 
"Vorrei fare del file una sorta di RAM alternativa".
Ho interpretato tale richiesta come la specifica di un file binario.
Lo so che si possono scrivere file binari anche con gli stream del C++, 
ma mi sembrava più semplice mostrarlo con quelli del C.
Inoltre, gli stream del C sono ancora usati in C++, soprattutto per I/O 
binario, per cui penso che tutti i programmatori C++ troverebbero utile 
conoscerli.
