Declare Multiline String em C++
-
Utilizar a classe
std::string
para declarar uma string multilinha em C++ -
Use a notação
const char *
para declarar literal de string multilinha -
Use a notação
const char *
com caracteres de folga Declare o literal de string multilinha
Este artigo explicará vários métodos de como declarar uma string multilinha em C++.
Utilizar a classe std::string
para declarar uma string multilinha em C++
O objecto std::string
pode ser inicializado com um valor string. Neste caso, declaramos a variável string s1
como uma variável local para a função main
. C++ permite a concatenação automática de múltiplas literais de string com aspas duplas numa declaração. Como resultado, pode-se incluir qualquer número de linhas enquanto se inicializa a variável string
e manter o código mais consistentemente legível.
#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;
}
Resultado:
This string will be printed as the one. You can include as many linesas you wish. They will be concatenated
Use a notação const char *
para declarar literal de string multilinha
Na maioria das situações, no entanto, pode ser mais prático declarar um literal de string somente leitura com um qualificador const
. Isto é mais prático quando os textos relativamente longos devem ser enviados para a consola, e estes textos são na sua maioria estáticos com poucas ou nenhumas alterações ao longo do tempo. Note-se que, a string do qualificador const
precisa de ser convertida para o objecto std::string
antes de passar como um argumento do 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;
}
Resultado:
This string will be printed as the one. You can include as many linesas you wish. They will be concatenated
Use a notação const char *
com caracteres de folga Declare o literal de string multilinha
Alternativamente, também se pode utilizar o carácter de contrabarra para construir um literal de string multilinha e atribuí-la ao ponteiro de char
qualificado de const
. Em resumo, o carácter de contrabarra precisa de ser incluído no final de cada quebra de linha, o que significa que a string continua na linha seguinte.
No entanto, tenha em atenção que o espaçamento se torna mais susceptível a erros, uma vez que quaisquer caracteres invisíveis, como separadores ou espaços, serão incluídos na saída. Por outro lado, pode-se utilizar esta característica para exibir alguns padrões mais facilmente 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;
}
Resultado:
This string will
printed as the pyramid
as one single string literal form
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