Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Gestione delle stringhe in C++

Articolo scritto da Stefano Cancedda
Pagina 3 di 3

Uso degli stream in input
Analogamente al caso dell'operatore di output è possibile effettuare le operazioni di input, sono supportate tutte le conversioni di dato precedenti, stavolta nella direzione inversa. Il seguente esempio sintetico illustra le funzionalità principali.

  stringstream s1, s2, s3;
  int raggio; float pigreco, stefano;
  s1 << "10";
  s2 << "3.14";
  s3 << "stefano è bello";
  
  //Assegna alla variabile raggio il valore intero 10
  s1 >> raggio; 
  
  //Assegna alla variabile prezzo il valore decimale 3.14
  s2 >> pigreco;
  
  //Verifica errore in lettura
   s3 >> stefano;  
  if (!s3) printf("errore");
Analogie sintattiche con I/O standard
Lo standard input e lo standard output, sono nella quasi totalità dei casi affidati rispettivamente all'acquisizione dati da tastiera ed alla visualizzazione sul monitor. Nel caso delle applicazioni console è possibile gestire il tutto per mezzo degli stream.
Il C++ mette a disposizione i due stream speciali cin e cout tramite la libreria <iostream>. La sintassi è formalmente identica a quella degli stringstream.

Esempi:

char c;
cin >> c; // legge un carattere da tastiera
cout << c // stampa sul monitor il carattere
Gestione dei formati
Altra caratteristica utilissima degli stream è la gestione diretta dei formati.
width si applica all'istruzione di scrittura seguente e definisce il minimo numero di caratteri da impiegare
stringstream s;
s.width(5);
s << "SC"; //risultato s: [] [] [S] [C]
precision definisce invece il numero massimo di caratteri da impiegare, si applica a numeri decimali
stringstream s;
s.precision(3);
s << '3.1415'; //risultato s: 3.14
alcuni caratteri speciali sono identificati da manipolatori senza argomento:
stringstream s;
s << endl; // append del carattere '/n'
s << ends; // append del terminatore '/0'
Sono immediate le conversioni di base:
stringstream s;
s << dec << num; // converte num in base 10 (decimale)
s << hex << num; // converte num in base 16 (esadecimale)
s << oct << num; // converte num in base 8  (ottale)
Gestione degli errori
In C++ le operazioni di I/O non generano mai eccezioni (in altri linguaggi come il Java avviene esattamente l'opposto). Questo implica che il programmatore deve testare esplicitamente il risultato di ogni operazione critica.
Una serie di flag predefiniti registrano lo stato dello stream.
stringstream s;
s << variabile_magica;
if (s.badbit) cout << "Errore gravissimo!";

Corsi
Corso ASP da ZeroCorso ASP da Zero
Imparare Microsoft ASP e VBScript da zero. A partire da 29 €.
Corso VB.NETCorso VB.NET
Realizzare applicazioni Desktop con Visual Basic .NET. A partire da 49 €.
Corso Webmaster BaseCorso Webmaster Base
Creare un sito Web da zero. A partire da 39 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122