Dichiarare la stringa multilinea in C++

Jinku Hu 12 ottobre 2023
  1. Usa la classe std::string per dichiarare una stringa multilinea in C++
  2. Usa la notazione const char * per dichiarare una stringa letterale su più linee
  3. Usa la notazione const char * con caratteri backlash Dichiara stringa multilinea letterale
Dichiarare la stringa multilinea in C++

Questo articolo spiegherà diversi metodi su come dichiarare una stringa multilinea in C++.

Usa la classe std::string per dichiarare una stringa multilinea in C++

L’oggetto std::string può essere inizializzato con un valore stringa. In questo caso, dichiariamo la variabile stringa s1 come variabile locale della funzione main. Il C++ consente di concatenare automaticamente più stringhe con virgolette doppie in un’istruzione. Di conseguenza, si potrebbe includere un numero qualsiasi di linee durante l’inizializzazione della variabile stringa e mantenere il codice leggibile in modo più coerente.

#include <iostream>
#include <iterator>
#include <string>
#include <vector>

using std::copy;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main() {
  string s1 =
      "This string will be printed as the"
      " one. You can include as many lines"
      "as you wish. They will be concatenated";

  copy(s1.begin(), s1.end(), std::ostream_iterator<char>(cout, ""));
  cout << endl;

  return EXIT_SUCCESS;
}

Produzione:

This string will be printed as the one. You can include as many linesas you wish. They will be concatenated

Usa la notazione const char * per dichiarare una stringa letterale su più linee

Nella maggior parte delle situazioni, tuttavia, può essere più pratico dichiarare una stringa letterale di sola lettura con un qualificatore const. Ciò è più pratico quando i testi relativamente lunghi devono essere inviati alla console e questi testi sono per lo più statici con modifiche minime o nulle nel tempo. Nota che, la stringa di caratteri del qualificatore const deve essere convertita nell’oggetto std::string prima di essere passata come argomento dell’algoritmo copy.

#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() {
  const char *s2 =
      "This string will be printed as the"
      " one. You can include as many lines"
      "as you wish. They will be concatenated";

  string s1(s2);

  copy(s1.begin(), s1.end(), std::ostream_iterator<char>(cout, ""));
  cout << endl;

  return EXIT_SUCCESS;
}

Produzione:

This string will be printed as the one. You can include as many linesas you wish. They will be concatenated

Usa la notazione const char * con caratteri backlash Dichiara stringa multilinea letterale

In alternativa, si può anche utilizzare il carattere backslash \ per costruire una stringa letterale su più linee e assegnarla al puntatore char qualificato const. In breve, il carattere barra rovesciata deve essere incluso alla fine di ogni interruzione di riga, il che significa che la stringa continua sulla riga successiva.

Tieni presente, tuttavia, che la spaziatura diventa più soggetta a errori da gestire poiché eventuali caratteri invisibili come tabulazioni o spazi verranno inclusi nell’output. D’altra parte, si potrebbe utilizzare questa funzione per visualizzare più facilmente alcuni modelli da console.

#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() {
  const char *s3 =
      "          This string will\n\
        printed as the pyramid\n\
    as one single string literal form\n";

  cout << s1 << endl;

  printf("%s\n", s3);

  return EXIT_SUCCESS;
}

Produzione:

          This string will
        printed as the pyramid
    as one single string literal form
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