15) I Manipolatori
Versione Completa
Stampa
Cerca
Utenti
Iscriviti
Condividi
:
JEHOVA e la NUOVA GERUSALEMME > INIZIO <
»
JEHOVA e la NUOVA GERUSALEMME > INIZIO <
»
PROGRAMMAZIONE C/C++ VISUALC++
»
INDICE Appunti sulla programmazione C++
JehovaZorobabele
0
0
mercoledì 26 ottobre 2016 18:27
Ora parliamo dei manipolatori
sono altre funzioni, queste serve per
formattare in un’ altro modo lo
stream
di
I/O
molti manipolatori sono uguali
alle funzioni che abbiamo visto prima, essendo anche loro specifici per
attivare o meno i
flags
ecco la lista di
questi manipolatori
I e O
indica l’
utilizzo se è per
cout O
o
cin I
o
entrambi IO per utilizzare questi manipolatori serve inserire
#include<iomanip>
:
boolalpha - nobooalpha per IO
attiva disattiva il flag true e false ,
dec hex oct per IO attiva il flag decimale o esadecimale o ottale,
endl per O carattere di
fine riga e svuota lo stream, ends per O un carattere nullo,
fixed scientific
per O attiva la modalità standard dei numeri o scientifici ,
flush O svuotamento dello stream ,
internal left right
O attiva il flag internal, left , right,
dove left e right inserisce caratteri di
riempimento left riempie la sinistra ,
right riempie la destra e internal
riempie il centro del campo
noshobase - shobase O inserisce i prefissi per i numeri ad esempio se si
utilizza un numero esadecimale prima del numero inserisce 0x la base
esadecimale ,
noshowpoit - showpoint O inserisce in modo non condizionale un punto
decimale in un campo a virgola mobile ovvero tratta i numeri in diversi
modi 1 quintale è 100 chili ma è anche 0.1 tonnellate , sono
anche 1000 ettogrammi ,
noshowpos - showpos O inserisce in un campo positivo
il segno +
,
noskipws - skippws O elimina i spazi
vuoti iniziali , se skipws() è uguale a 0 i spazi vuoti non vengono
eliminati
,
nouppercase - uppercase O cambia le scritte minuscolo in maiuscolo n
uppercase N,
setiosflags - resetioflags(f) IO
avvia o azzera i flags specificati in ( f ),
setbase () O imposta la base numerica se i numeri
sono dec, hex o oct
,
setfill() O imposta il carattere di riempimento
,
setprecisi0n() O imposta il numero di cifre di precisione per
i valori in virgola mobile
,
setw()
O imposta l’ ampiezza del campo ,
unitbuf O scarica l’ output dopo ogni inserimento, ws I salta i spazi vuoti iniziali
Ora vediamo l’ utilizzo di
queste funzioni preparo un programma uguale scritto con il sistema visto qui e
quello visto con l’ attivazione dei flags con il primo sistema le differenze
sono descritte evidenziate tra il giallo
e il verde si vede che con l’ utilizzo dei manipolatori si ha un codice più
compatto con un solo stream posso inserire più ordini al compilatori se qualcuno utilizza questo programma deve
inserire include e using un comando per
riga il resto può rimanere tutto su una riga il compilatore non ha problemi :
#include<iostream> #include<iomanip>
using namespace std;
int main () { cout
<< " attivazione dei flag
nuovo stile : \n\n";
cout << " scrivo il numero 125 in esadecimale:
"
<< hex
<< 125 <<endl;
cout << "\n\n scrivo il numero 12345.123 numero anticipato da setfill('x')\n
abilitiamo 10 spazi vuoti da setw(10): \n\n ";
cout << setfill ('x') <<
setw (10) << 12345.123;
cout << "\n\n Stesso lavoro ma attivo i flag
nell'altro modo con ios:: -:\n\n";
cout << " scrivo il numero 125 in esadecimale:
" ;
cout.setf (ios::hex,ios::basefield);
cout << 125
<< endl;
cout << "\n\n scrivo il numero 12345.123 numero anticipato da setfill('x')\n
abilitiamo 10 spazi vuoti da setw(10): \n\n ";
cout.fill ('x'); cout.width (10); cout << 12345.123
;
cout << "\n\n\nByMpt-Zorobabele \n Per uscire
premere un tasto + invio: "; char
zx; cin >> zx; }
Il
manipolatore
setiosflags() , resetioflags() attiva o meno i manipolatori ,
setiosflag() effettua la stessa azione della funzione setf()
,
mentre il
manipolatore boolalpha invece di portare
un numero diverso da 0 =positivo,
o uguale a 0 = negativo invece il
manipolatore usa il true e il false
vediamo l’ uso di questi 2 manipolatori per usare setiosflags ricordiamo di inserire
l’ inclusione di <iomanip> inserire questo pezzo di programma nel
programma scritto prima inserirlo al di
sopra della chiusura ecco il listato da
copiare :
cout << setiosflags (ios::showpos |
ios::showbase);
cout <<" decimale =
"<< 12345 << "\n esadecimale = " << hex
<< 12345 <<"\n octale = "<<oct<<12345; cout << " \n\n uso di boolalpha
... \n\n "; bool b = true;
cout << b << " <- prima
di boolalpha.. \n dopo di boolalpha
-> " << boolalpha << b << endl;
cout << "\n inserire un valore
booleano [true/false]: "; cin >> boolalpha >> b;
if(b == true) cout << "\n questo e' il valore
immesso: " << b << " = 1\n ";
else cout
<< "\n questo e' il valore immesso: " << b <<
" = 0\n ";
Abbiamo
detto che lo
stream
è la funzione di chiamata
cout << o cin>>
proprio
questi operatori
(<< inseritore) e (>> estrattore)
,
questi operatori possiamo utilizzarli
per leggere i dati tramite l’
overloading
, per creare una funzione per l’
inseritore o l’ estrattore si cambia
solo la parola
ostream
in istream
e invece di usare
<< si usa >>
nome_classe è il nome della classe che usiamo
oggetto
è l’
oggetto
per accedere i membri della
classe (
o.x
) in input questo oggetto va richiamato per la
lettura della memoria con
&o
pertanto avremo
nome_classe &oggetto
vediamo la sua sintassi è dove
usiamo
o
o
i
per
ostream o
istream
dentro la funzione se si usa
ostream si usa l’ inseritore stream <<
mentre se si
usa l’
estrattore istream
si usa stream>>
importantissimo la raccolta dei dati il
return stream
restituisce tutti i dati della
funzione della classe
i/ostream
normalmente questa funzione viene inserita al
di fuori della classe tutti i membri della classe devono essere
pubblici
, oppure viene dichiarata
friend
in modo che può
accedere i membri della classe cosi il
prototipo della funzione può essere
inserita dentro la classe ecco i 2 tipi di funzione per
ostream e per istream
mentre il corpo della funzione è uguale cambia solo l’ uso dello
stream
(<<) o ( >>)
:
friend
ostream
&operator<<(
ostream
&stream, nome_classe
oggetto
)
friend
istream
&operator
<<
(
istream
&stream, nome_classe
&oggetto
)
{ corpo
della funzione inseritore stream << (come cout) o
estrattore stream >>(come cin) return stream ;}
Effettivamente questa nuova funzione essendo un overloading
degli operatori
o<< i>>
non possono essere membri
della classe su cui lavora
nome_classe ogg
etto , ma se viene dichiarata
friend
amica allora deve essere inserita dentro la stessa classe
Ciao grazie da ByMpt-Zorobabele
Testo PDF aggiornato con questo ultimo capitolo inserito lo trovate
:
http://www.freeforumzone.com/d/11266858/Elenco-figure-dei-comandi-della-programmazione-C-TESTO-PDF/discussione.aspx
Anche qui di queste discussioni che inserisco faccio un testo PDF da poter
scaricare tutto il mio
materiale è da utilizzare come desiderate per il testo PDF vedi cartella
dedicata , ogni volta cambia ubicazione del testo allora cambio il file e
il testo lo inserisco dentro la cartella < file aggiornato ad oggi >
http://www.freeforumzone.com/d/11266858/Elenco-figure-dei-comandi-della-programmazione-C-TESTO-PDF/discussione.aspx
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa
clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 20:43.
Copyright © 2000-2024 FFZ srl -
www.freeforumzone.com