Stampa una stringa in C++

Jinku Hu 12 ottobre 2023
  1. Usa l’operatore std::cout e << per stampare una stringa
  2. Usa l’algoritmo std::copy per stampare una stringa
  3. Usa la funzione printf() per stampare una stringa
Stampa una stringa in C++

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;
}
Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Articolo correlato - C++ String