Stampa una stringa in C++
-
Usa l’operatore
std::cout
e<<
per stampare una stringa -
Usa l’algoritmo
std::copy
per stampare una stringa -
Usa la funzione
printf()
per stampare una stringa
Questo articolo illustrerà più metodi su come stampare una stringa in C++.
Usa l’operatore std::cout
e <<
per stampare una stringa
std::cout
è l’oggetto globale per controllare l’output in un buffer di flusso. Per visualizzare la variabile di stringa s1
nel buffer, è necessario utilizzare l’operatore - <<
chiamato operatore di inserimento del flusso. L’esempio seguente mostra un’operazione di output di una singola stringa.
#include <iostream>
#include <iterator>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
string s1 = "This string will be printed";
cout << s1;
cout << endl;
return EXIT_SUCCESS;
}
Produzione:
This string will be printed
Usa l’algoritmo std::copy
per stampare una stringa
Il metodo copy
proviene dalla libreria STL <algorithm>
e può manipolare gli elementi dell’intervallo in diversi modi. Dato che possiamo accedere al contenitore string
stesso come un intervallo, possiamo visualizzare ogni elemento aggiungendo l’argomento std::ostream_iterator<char>
all’algoritmo copy
.
Si noti che questo metodo può anche passare un delimitatore specifico tra ogni carattere della stringa. Nel codice seguente, non è specificato alcun delimitatore (""
) per stampare la stringa nella forma originale.
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
string s1 = "This string will be printed";
copy(s1.begin(), s1.end(), std::ostream_iterator<char>(cout, ""));
cout << endl;
return EXIT_SUCCESS;
}
Usa la funzione printf()
per stampare una stringa
printf
è un potente strumento utilizzato per l’output formattato. Fa parte della libreria di input-output standard C. Può essere chiamato direttamente dal codice C++. printf
ha il numero variabile di parametri e accetta la variabile stringa come tipo char *
, il che significa che dobbiamo chiamare il metodo c_str
dalla variabile s1
per passarlo come argomento. Nota che ogni tipo ha il proprio specificatore di formato (es. string
- %s
), che sono elencati nella tabella seguente.
Specifier | Descrizione |
---|---|
% |
Stampa un carattere letterale% (questo tipo non accetta alcun campo di flag, larghezza, precisione, lunghezza). |
d, i |
int come numero intero con segno. %d e %i sono sinonimi di output, ma sono diversi se usati con scanf per l’input (dove l’uso %i interpreterà un numero come esadecimale se è preceduto da 0x, e ottale se è preceduto da 0.) |
u |
Stampa int decimale senza segno. |
f, F |
double in notazione normale (a virgola fissa). f e F differiscono solo nel modo in cui vengono stampate le stringhe per un numero infinito o NaN (inf, infinity e nan per f; INF, INFINITY e NAN per F). |
e, E |
valore doppio in formato standard (d.ddde±dd ). Una conversione E utilizza la lettera E (anziché e) per introdurre l’esponente. |
g, G |
raddoppia in notazione normale o esponenziale, a seconda di quale sia più appropriato per la sua grandezza. g usa lettere minuscole, G usa lettere maiuscole. |
x, X |
unsigned int come numero esadecimale. x utilizza lettere minuscole e X utilizza lettere maiuscole. |
o |
unsigned int in ottale. |
s |
stringa con terminazione null. |
c |
char (carattere). |
p |
void* (puntatore a void) in un formato definito dall’implementazione. |
a, A |
double in notazione esadecimale, a partire da 0x o 0X. a usa lettere minuscole, A usa lettere maiuscole. |
n |
Non stampa nulla, ma scrive il numero di caratteri scritti con successo fino a quel momento in un parametro puntatore intero. |
#include <iostream>
#include <iterator>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
string s1 = "This string will be printed";
cout << s1;
cout << endl;
printf("%s", s1.c_str());
cout << endl;
return EXIT_SUCCESS;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook