Como imprimir uma string em C++

Jinku Hu 12 outubro 2023
  1. Utilize std::cout e << Operador para imprimir uma string
  2. Utilize std::copy Algoritmo para imprimir uma string
  3. Utilize printf() Função para imprimir uma string
Como imprimir uma string em C++

Este artigo demonstrará vários métodos sobre como imprimir um string em C++.

Utilize std::cout e << Operador para imprimir uma string

std::cout é o objeto global para controlar a saída para um buffer de fluxo. Para emitir a variável string s1 para o buffer, precisamos utilizar o operador - << chamado operador de inserção de fluxo. O exemplo a seguir demonstra uma única operação de saída de string.

#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

Utilize std::copy Algoritmo para imprimir uma string

O método copy é da biblioteca STL, e pode manipular os elementos da gama de várias maneiras. Como podemos acessar o próprio contêiner como um range, podemos emitir cada elemento adicionando o argumento std::ostream_iterator<char> ao algoritmo copy.

Observe que este método também pode passar um delimitador específico entre cada caractere da string. No código a seguir, nenhum delimitador ("") é especificado para imprimir a string na 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;
}

Utilize printf() Função para imprimir uma string

O printf é uma ferramenta poderosa utilizada para formatar a saída. Faz parte da biblioteca de inteiro-saída padrão C. Ela pode ser chamada diretamente do código C++. O printf tem o número de parâmetros da variável, e toma a variável string como tipo char *, o que significa que temos que chamar o método c_str da variável s1 para passá-la como um argumento. Observe que cada tipo tem seu próprio especificador de formato (por exemplo string - %s), que estão listados na tabela a seguir.

Especificador Descrição
% Imprime um caractere % literal (este tipo não aceita nenhuma bandeira, largura, precisão, campos de comprimento).
d, i int como um número inteiro assinado. %d e %i são sinônimos de saída, mas são diferentes quando utilizados com scanf para entrada (onde utilizar %i interpretará um número como hexadecimal se for precedido por 0x, e octal se for precedido por 0).
u Imprimir int. decimal sem assinatura.
f, F duplo em notação normal (ponto fixo). f e F diferem apenas em como as strings para um número infinito ou NaN são impressas (inf, infinity e nan para f; INF, INFINITY e NAN para F).
e, E valor duplo na forma padrão (d.ddde±dd). Uma conversão E usa a letra E (em vez de e) para introduzir o expoente.
g, G g usa letras minúsculas, G usa letras maiúsculas.
x, X int não assinado como um número hexadecimal. x usa letras minúsculas e X usa letras maiúsculas.
o int não assinado em octal.
s string com termo nulo.
c char (caractere).
p void* (ponteiro para void) em um formato definido pela implementação.
a, A dupla em notação hexadecimal, começando com 0x ou 0X. a utiliza letras minúsculas, A utiliza letras maiúsculas.
n Imprime nada, mas escreve o número de caracteres escritos com sucesso até agora em um parâmetro de ponteiro inteiro.
#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

Artigo relacionado - C++ String