Newsgroup: it.comp.lang.c++
Titolo: string, cin e files

Salve a tutti,
sto riprendendo a programmare in C++ dopo due anni e molto e'
cambiato. Naturalmente dovro' rispettare lo standard d'ora in poi. E
subito con la prima domanda... dove (se) e' possibile scaricarlo ?
come unica fonte di informazioni ho l'msdn ma, essendo targate ms, non
si riesce mai a capire dove inizi lo standard ansi e dove finisca lo
'standard ms' ! Inoltre ho notato che la documentazione su tutto cio'
che e' standard ansi, non e' cosi' approfondita come quella ms. Un
esempio su tutti, cin e cout. ma sara' solo una mia impressione.
comunque sia, ho imparato quel poco di standard che conosco grazie ai
vostri post. Sono sorti pero' dei problemini.
naturalmente e' tutto con gli include necessari (non .h, non
preoccupatevi :) e con la direttiva "using namespace std;"
// -------------------------
string s;
s = "Ciao ";
ostringstream temp(s);
temp << "a tutti !" << endl;
s = temp.str();
cout << s << endl;
// -------------------------
inizio con le domande:
1- perche' esistono cosi' tante classi ? ad esempio, le funzioni di
'ifstream' e 'ofstream' non sono contenute tutte in 'fstream' ?
2- cosa accetta il costruttore di 'ostringstream' ? (scusatemi ma ai
miei tempi era diverso... (se non vado errato sono i template che non
riesco a capire) ) A intuito, credevo che, con quella istruzione,
'temp' contenesse cio' che conteneva 's''. Ma sembra che poi non possa
fare l'append con l'operator<<. Se temp lo dichiaro senza la 's', il
comportamento mi e' alquanto anomalo... come mai ?
Altro pezzo di codice:
// -------------------------
string s;
cout << "Inserisci una frase: " << endl;
cin >> s;
cout << s << endl;
// -------------------------
Questo codice stampa solo la prima parola. Lo stesso accade quando
cerco di leggere da file. Legge parola per parola, finche' non e'
arrivato alla eof(). Ma nel caso di cin ? cin.eof() ? boh...
Sui file e poi chiudo:
1- Come si apre un file senza troncarlo ? 
ofstream fd("temp", "ios::out | ios::binary");
va bene ?
2- come si puo' scrivere un intera classe su file senza dover
passargli tutti i campi ? puntatore, forse ?
// -------------------------
class foo {
public:
	int i;
	[...]
};
[...]
ofstream f("temp", ios::out | ios::binary);
foo rec;
rec.i = 100;
[...]
f << rec;
// -------------------------
Sarebbe stato bello se avesse scritto tutti i campi, anche se non so
come avrebbe fatto a capirne la lunghezza in byte... ma credo si possa
fare... giusto ? (:
Grazie mille a chi e' riuscito a leggere fin qui (dato che di queste
domande ne vedete tante) e a chi avra' la pazienza di rispondermi.
Saluti,
korleon
ps: il codice che ho scritto non l'ho compilato, ma credo non ci siano
errori (:
-- 
cp win3.1 winxp
rm -r doors_,_windows_&_gates
mv gates out_of_windows
mv $$$ antitrust_judge


Lo standard lo puoi scaricare pagando 200$ dal sito dell'ansi... ma ho
sentito (non sono sicuro) che una versione del libro dello Stroustrup lo
includa per intero in una appendice alla fine del libro.
Non so rispondere al resto :)

Lo standard lo puoi scaricare pagando 200$ dal sito dell'ansi...
200$ o 20$?
-- 
                    Marco Barisione (ICQ 84277092)
Se sei interessato alla creazione di un newsgroup generico in cui si
possa parlare di quei linguaggi di programmazione senza un gruppo
apposito vota per it.comp.lang su it.news.votazioni.

 Lo standard lo puoi scaricare pagando 200$ dal sito dell'ansi... 
Mi risulta che sia disponibile a 18$. Però sull'sito dell'Ansi ho
riscontrato una stranezza:
 
http://webstore.ansi.org/ansidocstore/find.asp?find_spec=C%2B%2B
Due dei risultati di questa ricerca sembrano riferirsi allo stesso
documento (ISO/IEC 14882-1998); tuttavia, uno costa 18 dollari, mentre
l'altro 245(!). Un errore? Mi sfugge qualcosa?
Max

 includa per intero in una appendice alla fine del libro.
Ne dubito. Non dovrebbe avere i diritti di pubblicazione. E poi lo
standard completo rischia di essere più grosso del libro (sono 776
pagine di standard, parecchie per una appendice!).
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

 includa per intero in una appendice alla fine del libro.
Lo standard in versione .pdf costa 18 dollari USA.  Incidentalmente,
perche' il tuo newsreader usa "R:" per i followups?  In questo modo il
mio NR (emacs 21 + gnus) non associa il tuo mesaggio al thread
principale (il che e' assai noioso).
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

 principale (il che e' assai noioso).
Vorrei dire, una volta tanto, la mia su questo annoso problema.
Moltissimi si lamentano della versione di OL che usa R: invece che Re:
come previsto dalla netiquette. Ma hanno ragione solo in parte.
Se dicono che si tratta di una violazione della netiquette (come il
quoting sbagliato, il postare senza leggere il manifesto e l'aver
seguito il NG per qualche settimana etc.) allora hanno totalmente e
perfettamente ragione.
Quando invece sostengono che OL non segue lo standard e di conseguenza
incasina altri NR che invece sono standard allora hanno torto.
OL segue perfettamente lo standard (che non dice per nulla che i reply
vanno fatti precedere da Re:) e viola solo la netiquette (o meglio non
agevola l'utente nel rispettarla).
Semmai sono i NR che vengono incasinati da questo che non seguono lo
standard (o meglio non permettono all'utente di visualizzare i thread
secondo lo standard). Infatti il threading è gestito dall header
"References:" seguito dal message ID del messaggio "padre". Tale header
viene correttamente creato dai NR in questione, ma per qualche motivo
non viene usato nella visualizzazione dei threads. Questo comportamento
non viola gli standard (come non li viola OL) ma può rendere le cose
difficili agli utenti.
Quindi è mia opinione che i possessori di OL devono aggiornare la line
del Subject in Re: per motivi di netiquette (o procurarsi un NR che la
crea corretta automaticamente) mentro i possessori di NR che gestiscono
il threading solo basandosi sul Subject (alcuni credo che diano
l'opzione di gestirlo in un modo o nell'altro) dovrebbero evitare di
considerare OL fuori standard e cominciare a considerare il loro NR come
tale. Senza per questo implicare che debbano smettere di lamentarsi
degli UTENTI di OL che NON correggono il subject e che quindi postano in
violazione della netiquette. Ma lo facciano citando la netiquette e non
il threading del loro NR.
In altre parole: se postassi un Sub con R: (in una gerarchia ordinaria)
e mi dicessero che ho violato la netiquette, riconoscerei il mio errore.
Ma se mi dicessero che il loro NR non segue bene il thread a causa del
Subject con cui ho postato credo che risponderei "cambia NR". E qusto
vale doppiamente per i post in gerarchie private (fra cui
microsoft.public.*, free.* etc.).


 torto. 
Da RFC-1036:
 «[...] If the message is submitted in response to another message
  (e.g., is a follow-up) the default subject should begin with the
  four characters "Re:" [...]»
 «[...] Implementations should provide a follow-up command, which
  allows a user to post a follow-up message. This command should 
  generate a "Subject" line which is the same as the original message,   
  except that if the original subject does not begin with "Re:" or   
  "re:", the four characters "Re:" are inserted before the subject [...]»
-- 
Ciao, Marvin

   four characters "Re:" [...]»
 
l'RFC dice "should" begin e non "must" begin.
In un' RFC , "should" viene usato per dire "sarebbe meglio se", e' "buona 
norma che", ecc.
Mentre "must" viene usato per "deve assolutamente".
Quindi, OL, segue le "regole" dell'RFC, ignorandone pero' i "consigli" ;-)
Saluti 
Fabio
-- 
Posted from 
flopiano.mm.eutelsat.org
 [194.214.173.28] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

difficili agli utenti.
Spesso si disabilita quell'opzione per avere la possibilità di
spezzare correttamente i thread quando cambia il subject (i tipici
messaggi con subject "Qualcosa (was Qualcosa alro)").
Agli utenti di OE comunque costa molto poco installarsi la patch
giusta (o aggiornare OE che nelle ultime versioni si comporta
automaticamente), anche perché l'uso di "R:" porta alla creazione di
subject lunghissimi tipo "Re: R: Re: R: Re: R: Re: qualcosa".


   four characters "Re:" [...]»
Should ha valore di un consiglio. E' di fatto pertanto meno vincolante
della netiquette che per i post nelle gerarchie classiche (non in quelle
private o nella gerarchia free.*) è considerata una regola da
rispettare. Questo paragrafo, pur essendo in un documento standard e
quindi più "forte" che non la netiquette, specifica should e pertanto
non è vincolante.
Comunque OL è stato aggiornato ed è ora compliant sia con la netiquette
che con questo paragrafo.
Nota inoltre che se anche lo standard dicesse MUST o anche solo SHALL,
sta parlando del subject creato di default dal NR. Pertanto io sono
liberissimo di modificare a mano il subject e postare con un subject che
inizia con "R:". Se lo faccio violo la netiquette e non lo standard (non
lo violerei neppure se dicesse MUST o SHALL in quel paragrafo e
nell'altro che ometto di quotare).
Anche se il messaggio a cui replico ha come Subject "Ciao, come va?" e
la mia replica ha come Subject "Benissimo, grazie", il NR dovrebbe farti
vedere la mia replica come appartenente allo stesso thread (e come
risposta al messaggio originale).
Ovviamente ... netiquette a parte!


Quindi, OL, segue le "regole" dell'RFC, ignorandone pero' i "consigli"
;-)
Esatto.
Anzi, quasi esatto, perchč dovresti parlare al passato visto che č stato
aggiornato da allora.


 subject lunghissimi tipo "Re: R: Re: R: Re: R: Re: qualcosa".
Yes. Infatti ho detto che gli utenti di OE dovrebbero patchare o
aggiornare OE. Ma resta comunque ingiusto accusare OE di non essere
standard: bisognerebbe correttamente dire che l'utente (e non OE) non
segue la netiquette (o al massimo che OE non segue i consigli
implementativi dello standard e che quindi l'utente dovrebbe aggiornarlo
o correggere a mano il subject per rientrare nella netiquette. Poi sono
cavoli suoi se preferisce correggerli a mano).


Should ha valore di un consiglio. 
Le RFC, se e' per questo, non sono neanche standard a tutti
gli effetti, alcune si tramutano in standard veri e propri,
moltissime altre rimangono semplicemente standard "de
facto", ma proprio per questo sarebbe bene rispettarle.
Tra l'altro "should", in inglese, indica un obbligo morale,
concetto un po' piu' forte di "consiglio" e sarebbe bene
seguire il comportamento comune.
Chi si lamenta di Outlook e' nel giusto.
Non vedo perche' tutto il mondo debba adeguarsi agli
standard de facto Microsoft e Microsoft non debba adeguarsi
agli standard de facto del mondo.
Inoltre, dire che l'RFC si riferisce al subject creato di
default dal NR e che quindi sei libero di modificare a mano
il subject e', senza offesa, una stupidaggine; quello che
conta e' l'effetto finale.
-- 
The Follet

Lo standard in versione .pdf costa 18 dollari USA.
Credo che la versione da 200$ sia quella che include il
"Rationale" (alla stregua dell'ISO C).
Lo standard C, per esempio, oscilla da 18$ a 400$.
-- 
The Follet

 conta e' l'effetto finale.
Dire che la RFC si riferisce al subject creato di default dal NR è pura
verità.
Sul fatto che quello che conta sia l'effetto finale sono d'accordo.
Proprio per questo a te non deve fregare nulla se uno "sistema" il
subject a mano o se glielo fa direttamente il NR.


 l'altro 245(!). Un errore? Mi sfugge qualcosa?
Penso che quello da 245 dollari sia la versione cartacea.
Ciao,
Nicola

Penso che quello da 245 dollari sia la versione cartacea.
Se non sbaglio quella che costa $18 e' la versione
ANSI. Per avere quella ISO (anche solo download) si
sborsa un sacco di piu' e cambiano credo solamente
i timbri sulla copertina e la bella soddisfazione
di aver aiutato a raccimolare gli stipendi di un
po' di dirigenti bisognosi.
Andrea

 Mentre "must" viene usato per "deve assolutamente".
Il significato è molto più restrittivo. Da rfc2119:
[...]
3. SHOULD   This word, or the adjective "RECOMMENDED", mean that there
   may exist valid reasons in particular circumstances to ignore a
   particular item, but the full implications must be understood and
   carefully weighed before choosing a different course.
[...]
Mi piacerebbe sapere quali sono questi validi motivi <g>.

 Mi piacerebbe sapere quali sono questi validi motivi <g>.
"Freedom to innovate" ? :-)
Ciao,
Nicola

 Non so rispondere al resto :)
Grazie lo stesso ma... qualcun'altro sa farlo ? (cioe'... capisco che
cose cosi' basilari siano fastidiose per voi...)
Forse era meglio se non avessi messo quella considerazione sullo
standard... ne e' uscito un thread diverso da quello che speravo...
Su, dai... 5 minutini potete dedicarmeli... (:
Grazie lo stesso a tutti,
korleon
