Déclarer une chaîne de caractères multiligne en C++

Jinku Hu 12 octobre 2023
  1. Utilisez la classe std::string pour déclarer une chaîne multiligne en C++
  2. Utilisez la notation const char * pour déclarer les chaînes de caractères multilignes littérales
  3. Utiliser la notation const char * avec caractères de retour Déclarer la chaîne de caractères multiligne littérale
Déclarer une chaîne de caractères multiligne en C++

Cet article explique plusieurs méthodes de déclaration d’une chaîne de caractères multiligne en C++.

Utilisez la classe std::string pour déclarer une chaîne multiligne en C++

L’objet std::string peut être initialisé avec une valeur de type chaîne. Dans ce cas, nous déclarons la variable chaîne s1 comme une variable locale de la fonction main. Le C++ permet de concaténer automatiquement plusieurs littéraux de chaînes de caractères à double apostrophe dans une déclaration. Par conséquent, on peut inclure un nombre quelconque de lignes lors de l’initialisation de la variable string et garder le code plus lisible.

#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;
}

Production :

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

Utilisez la notation const char * pour déclarer les chaînes de caractères multilignes littérales

Dans la plupart des situations, cependant, il peut être plus pratique de déclarer une chaîne en lecture seule littérale avec un qualificatif const. C’est particulièrement pratique lorsque les textes relativement longs doivent être sortis sur la console, et que ces textes sont pour la plupart statiques avec peu ou pas de changements dans le temps. Notez que la chaîne de caractères du qualificateur const doit être convertie en objet std::string avant d’être passée en argument de l’algorithme 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;
}

Production :

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

Utiliser la notation const char * avec caractères de retour Déclarer la chaîne de caractères multiligne littérale

On peut aussi utiliser le caractère backslash \ pour construire une chaîne multiligne littérale et l’assigner au pointeur char qualifié de const. En bref, le caractère backslash doit être inclus à la fin de chaque saut de ligne, ce qui signifie que la chaîne continue sur la ligne suivante.

Attention, cependant, l’espacement devient plus sujet à erreur car tout caractère invisible comme les tabulations ou les espaces sera inclus dans la sortie. D’autre part, on peut utiliser cette fonction pour afficher certains motifs plus facilement à la 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;
}

Production :

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

Article connexe - C++ String