Declare Multiline String em C++

  1. Utilizar a classe std::string para declarar uma string multilinha em C++
  2. Use a notação const char * para declarar literal de string multilinha
  3. 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 <string>
#include <vector>
#include <iterator>

using std::cout; using std::vector;
using std::endl; using std::string;
using std::copy;

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 <string>
#include <vector>
#include <iterator>

using std::cout; using std::cin;
using std::endl; using std::string;
using std::vector; using std::copy;

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 <string>
#include <vector>
#include <iterator>

using std::cout; using std::cin;
using std::endl; using std::string;
using std::vector; using std::copy;

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

Artigo relacionado - C++ String

  • Como determinar se uma string é um número em C++
  • Substituir uma parte da string em C++