Cómo imprimir una cadena en C++

Jinku Hu 12 octubre 2023
  1. Use el operador std::cout y << para imprimir una cadena
  2. Use el algoritmo std::copy para imprimir una cadena
  3. Use la función printf() para imprimir una cadena de caracteres
Cómo imprimir una cadena en C++

Este artículo demostrará múltiples métodos sobre cómo imprimir una cadena en C++.

Use el operador std::cout y << para imprimir una cadena

std::cout es el objeto global para controlar la salida a un búfer de flujo. Para dar salida a la variable de cadena s1 al buffer, necesitamos usar el operador - << llamado operador de inserción de flujo. El siguiente ejemplo demuestra una operación de salida de una sola cadena.

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

Resultado:

This string will be printed

Use el algoritmo std::copy para imprimir una cadena

El método de copy es de la biblioteca STL <algorithm>, y puede manipular los elementos del rango de múltiples maneras. Dado que podemos acceder al contenedor string en sí mismo como un rango, podemos dar salida a cada elemento añadiendo el argumento std::ostream_iterator<char> al algoritmo copy.

Observa que este método también puede pasar un delimitador específico entre cada carácter de la cadena. En el siguiente código, no se especifica ningún delimitador ("") para imprimir la cadena en su forma original.

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

Use la función printf() para imprimir una cadena de caracteres

printf es una poderosa herramienta utilizada para la salida formateada. Es parte de la biblioteca de entrada y salida estándar de C. Puede ser llamada desde el código C++ directamente. printf tiene el número de variables de los parámetros, y toma la variable string como tipo char *, lo que significa que tenemos que llamar al método c_str desde la variable s1 para pasarla como argumento. Nótese que cada tipo tiene su propio especificador de formato (por ejemplo, string - %s), que se listan en la siguiente tabla.

Especificador Descripción
% Imprime un carácter % literal (este tipo no acepta ningún campo de banderas, ancho, precisión, longitud).
d, i int como un entero firmado. %d y %i son sinónimos de salida, pero son diferentes cuando se usan con scanf para la entrada (donde usando %i interpretará un número como hexadecimal si está precedido por 0x, y octal si está precedido por 0.)
u Imprimir int decimal sin firmar.
f, F doble en notación normal (punto fijo). f y F sólo difieren en cómo se imprimen las cadenas para un número infinito o NaN (inf, infinito y nan para f; INF, INFINITY y NAN para F).
e, E doble valor en forma estándar (d.ddde±dd). Una conversión E utiliza la letra E (en lugar de e) para introducir el exponente.
g, G doble en notación normal o exponencial, lo que sea más apropiado para su magnitud. g utiliza letras minúsculas, G utiliza letras mayúsculas.
x, X sin signo int como un número hexadecimal. x usa letras minúsculas y X usa mayúsculas.
o sin firmar en octal.
s cadena terminada en nulo.
c char (carácter).
p void* (puntero a void) en un formato definido por la aplicación.
a, A doble en notación hexadecimal, comenzando con 0x o 0X. a utiliza letras minúsculas, A utiliza letras mayúsculas.
n No imprime nada, pero escribe el número de caracteres escritos con éxito hasta ahora en un parámetro de puntero entero.
#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;
}
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