C++ Basic Input/Output

Ciao a tutti, futuri programmatori C++! Oggi, esploreremo il mondo affascinante dell'input e dell'output in C++. Non preoccupatevi se non avete mai scritto una riga di codice prima – inizieremo dall'inizio e costruiremo gradualmente. Alla fine di questo tutorial, rimarrete sbalorditi di quante cose possiate fare con sole poche righe di codice C++!

C++ Basic Input/Output

File di intestazione delle librerie I/O

Prima di poter iniziare a stampare messaggi sullo schermo o a leggere input dall'utente, dobbiamo includere i file di intestazione necessari. In C++, le operazioni di input e output sono gestite dalla libreria iostream.

Iniziamo con un semplice esempio:

#include <iostream>

int main() {
// Il vostro codice andrà qui
return 0;
}

Questa è la struttura di base di un programma C++. La riga #include <iostream> dice al compilatore di includere la libreria iostream, che ci fornisce accesso alla funzionalità di input e output.

Il flusso di output standard (cout)

Ora, vediamo come visualizzare il testo sullo schermo. In C++, usiamo cout (pronunciato "cee-out") per inviare l'output alla console.

#include <iostream>
using namespace std;

int main() {
cout << "Ciao, Mondo!";
return 0;
}

Quando esegui questo programma, visualizzerà "Ciao, Mondo!" sullo schermo. Analizziamo il codice:

  • cout è l'oggetto del flusso di output standard.
  • L'operatore << viene utilizzato per inviare dati a cout.
  • Il testo tra virgolette è chiamato letterale di stringa.

Puoi anche usare cout per stampare più elementi:

cout << "Il mio nome è " << "Alice" << " e ho " << 25 << " anni.";

Questo produrrà: "Il mio nome è Alice e ho 25 anni."

Aggiungere una nuova riga

Per spostarsi su una nuova riga dopo l'output, puoi usare il manipolatore endl o il carattere \n:

cout << "Prima riga" << endl;
cout << "Seconda riga\n";
cout << "Terza riga" << '\n';

Il flusso di input standard (cin)

Ora che possiamo emettere testo, vediamo come ottenere l'input dall'utente. Per questo scopo, usiamo cin (pronunciato "cee-in").

#include <iostream>
using namespace std;

int main() {
int età;
cout << "Quanti anni hai? ";
cin >> età;
cout << "Hai " << età << " anni!" << endl;
return 0;
}

In questo esempio:

  • Dichiariamo una variabile intera età per memorizzare l'input dell'utente.
  • Usiamo cout per richiedere l'età dell'utente.
  • cin >> età legge un intero dall'utente e lo memorizza nella variabile età.
  • Infine, usiamo cout per visualizzare il risultato.

Puoi anche leggere più input:

string nome;
int età;
cout << "Inserisci il tuo nome e età: ";
cin >> nome >> età;
cout << "Ciao, " << nome << "! Hai " << età << " anni." << endl;

Il flusso di errore standard (cerr)

Mentre cout è ottimo per l'output normale, a volte abbiamo bisogno di visualizzare messaggi di errore. Ecco dove entra in gioco cerr. È simile a cout, ma è specificamente previsto per messaggi di errore.

#include <iostream>
using namespace std;

int main() {
int denominatore = 0;
if (denominatore == 0) {
cerr << "Errore: Impossibile dividere per zero!" << endl;
}
return 0;
}

L'uso di cerr aiuta a distinguere tra output normale e messaggi di errore, il che può essere cruciale durante il debug dei programmi.

Il flusso di log standard (clog)

Infine, abbiamo clog, che viene utilizzato per registrare i messaggi. È simile a cerr, ma potrebbe essere bufferizzato, il che significa che l'output potrebbe non apparire immediatamente.

#include <iostream>
using namespace std;

int main() {
clog << "Questo è un messaggio di log." << endl;
return 0;
}

Nella pratica, clog non viene utilizzato frequentemente come cout e cerr, ma è buono sapere che esiste.

Formattazione dell'output

Ora che abbiamo coperto i concetti di base, vediamo alcune modalità per formattare il nostro output e renderlo più gradevole.

Impostazione della larghezza del campo

Puoi usare il manipolatore setw per impostare la larghezza di un campo:

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
cout << setw(10) << "Nome" << setw(5) << "Età" << endl;
cout << setw(10) << "Alice" << setw(5) << 25 << endl;
cout << setw(10) << "Bob" << setw(5) << 30 << endl;
return 0;
}

Questo produrrà un output ben allineato:

Nome  Età
Alice   25
Bob   30

Precisione per i numeri a virgola mobile

Per i numeri a virgola mobile, puoi controllare la precisione utilizzando setprecision:

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
double pi = 3.14159265359;
cout << "PiGreco predefinito: " << pi << endl;
cout << "PiGreco a 4 cifre decimali: " << fixed << setprecision(4) << pi << endl;
return 0;
}

Output:

PiGreco predefinito: 3.14159
PiGreco a 4 cifre decimali: 3.1416

Riepilogo degli oggetti e dei manipolatori dei flussi I/O

Ecco una tabella utile che riepiloga gli oggetti e i manipolatori dei flussi I/O che abbiamo appreso:

Oggetto/Manipolatore Descrizione Esempio
cout Flusso di output standard cout << "Ciao";
cin Flusso di input standard cin >> variabile;
cerr Flusso di errore standard cerr << "Errore!";
clog Flusso di log standard clog << "Messaggio di log";
endl Fine della riga cout << "Ciao" << endl;
setw Imposta la larghezza del campo cout << setw(10) << "Nome";
setprecision Imposta la precisione dei numeri a virgola mobile cout << setprecision(2) << 3.14159;

E con questo, abbiamo finito! Avete appena appreso i concetti di base dell'input e dell'output in C++. Ricordate, la pratica fa l'artista, quindi non esitate a sperimentare con questi concetti. Provate a combinare in diverse modalità, e presto scriverete programmi complessi con facilità.

Buon coding, e che i vostri output siano sempre come previsto e i vostri input sempre validi!

Credits: Image by storyset