Declare la cadena multilínea en C++

Jinku Hu 12 octubre 2023
  1. Usa la clase std::string para declarar una cadena multilínea en C++
  2. Usa la notación const char * para declarar literales de cadena de caracteres múltiples
  3. Usa la notación const char * con caracteres de retroceso Declarar cadena multilínea literal
Declare la cadena multilínea en C++

Este artículo explicará varios métodos de cómo declarar una cadena multilínea en C++.

Usa la clase std::string para declarar una cadena multilínea en C++

El objeto std::string puede ser inicializado con un valor de cadena. En este caso, declaramos la variable string s1 como una variable local de la función main. C++ permite que múltiples literales de cadena con doble cita se concatenen automáticamente en una declaración. Como resultado, se puede incluir cualquier número de líneas mientras se inicializa la variable string y mantener el código más consistentemente legible.

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

Producción :

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

Usa la notación const char * para declarar literales de cadena de caracteres múltiples

En la mayoría de las situaciones, sin embargo, puede ser más práctico declarar una cadena de sólo lectura literal con un calificativo de const. Esto es más práctico cuando los textos relativamente largos deben salir a la consola, y estos textos son en su mayoría estáticos con pocos o ningún cambio a lo largo del tiempo. Nótese que, la cadena de caracteres del calificador const necesita ser convertida al objeto std::string antes de pasar como argumento del 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;
}

Producción :

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

Usa la notación const char * con caracteres de retroceso Declarar cadena multilínea literal

Alternativamente, también se puede utilizar el carácter de barra invertida \ para construir un literal de cadena multilínea y asignarlo al puntero char calificado const. En breve, el carácter de barra invertida debe ser incluido al final de cada salto de línea, lo que significa que la cadena continúa en la siguiente línea.

Tenga en cuenta, sin embargo, que el espaciado se vuelve más propenso a errores ya que cualquier carácter invisible como tabulaciones o espacios se incluirán en la salida. Por otro lado, uno podría utilizar esta característica para mostrar algunos patrones más fácilmente para consolar.

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

Producción :

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

Artículo relacionado - C++ String