Stampa una stringa in C++
- 
          
            Usa l’operatore std::coute<<per stampare una stringa
- 
          
            Usa l’algoritmo std::copyper 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. %de%isono sinonimi di output, ma sono diversi se usati conscanfper l’input (dove l’uso%iinterpreterà 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