Como imprimir uma string em C++
-
Utilize
std::cout
e<<
Operador para imprimir uma string -
Utilize
std::copy
Algoritmo para imprimir uma string -
Utilize
printf()
Função para imprimir uma string
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;
}
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