PDA

View Full Version : [C++] domanda velocissima... a cosa serve std:: ?!


gallo85
29-08-2007, 11:20
a cosa serve std:: prima di cin cout, ifstream ecc....?

non lo ricordo perchè l'esame l'ho dato un pacco di tempo fa :mc: :mc:

variabilepippo
29-08-2007, 11:28
:: è detto "scope resolution operator" e serve per specificare a quale entità ci si sta riferendo. Con std:: ci si riferisce al namespace std. Per evitare di doverlo scrivere esplicitamente puoi inserire questo statement prima del main:

using namespace std;

gallo85
29-08-2007, 11:31
:: è detto "scope resolution operator" e serve per specificare a quale entità ci si sta riferendo. Con std:: ci si riferisce al namespace std. Per evitare di doverlo scrivere esplicitamente puoi inserire questo statement prima del main:

using namespace std;

grazie :) ti disturbo ancora un attimo, cosa sarebbe questo namespace std? perchè viene utilizzato?

in pratica perchè nel programma che sto guardando non c'è scritto solo cout ma std::cout o solo ifstream invece di std::ifstream?

variabilepippo
29-08-2007, 11:34
Puoi immaginare un namespace come un "raccoglitore di simboli", il namespace std, in particolare, mette a tua disposizione gli stream standard cin, cout e cerr, le stringhe e tante altre belle cosette!

in pratica perchè nel programma che sto guardando non c'è scritto solo cout ma std::cout o solo ifstream invece di std::ifstream?

Facci vedere il sorgente completo. Con quale compilatore lo compili?

gallo85
29-08-2007, 11:39
Puoi immaginare un namespace come un "raccoglitore di simboli", il namespace std, in particolare, mette a tua disposizione gli stream standard cin, cout e cerr, le stringhe e tante altre belle cosette!



Facci vedere il sorgente completo. Con quale compilatore lo compili?

lo compilo con visual c++, adesso ho detto alla mia ragazza di passarmi il programma su msn :)

cmq forse ho capito... io a lezione non usavo std:: ma perchè ho letto che alcuni compilatori (e quindi forse visual c++) accettano la funzione senza quel pezzetto iniziale (prima quindi del cin cout ecc...) quindi in questo caso sarebbe una cosa in più, no?


l'ho letto qui: http://www.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/34Standard.html

variabilepippo
29-08-2007, 11:45
quindi in questo caso sarebbe una cosa in più, no?

Tutto dipende dalla VERSIONE del compilatore. In passato lo standard C++ prevedeva l'appartenenza dei componenti di iostream.h allo scope globale, la notazione attuale richiede l'uso di <iostream> al posto di <iostream.h>. Avendo spostato i simboli nel namespace std per accedervi dovrai:

A] Inserire la riga using namespace std;

OPPURE

B] Inserire std:: davanti ad ogni simbolo definito nel namespace standard.

gallo85
29-08-2007, 11:48
Tutto dipende dalla VERSIONE del compilatore. In passato lo standard C++ prevedeva l'appartenenza dei componenti di iostream.h allo scope globale, la notazione attuale richiede l'uso di <iostream> al posto di <iostream.h>. Avendo spostato i simboli nel namespace std per accedervi dovrai:

A] Inserire la riga using namespace std;

OPPURE

B] Inserire std:: davanti ad ogni simbolo definito nel namespace standard.


azz, non riesce a passarmi il programma adesso... però da quel che ricordo a lezione usavamo <iostream.h> e facevamo tutto senza std:: è possibile?

P.S. usando visual c++ 6 credo

variabilepippo
29-08-2007, 11:54
e facevamo tutto senza std:: è possibile?

P.S. usando visual c++ 6 credo

Tenendo presente che Visual C++ 6 ha oltre 10 anni: sì. :D

gallo85
29-08-2007, 11:55
Tenendo presente che Visual C++ 6 ha oltre 10 anni: sì. :D

yuhuu allora ci siamo capiti!! vista la mia ignoranza in materia la vedevo dura :mc: :sofico:

grazie mille!!