Cadeias C++
C++ fornece os seguintes dois tipos de representações de string -
- A cadeia de caracteres do estilo C.
- O tipo de classe de string introduzido com o C++ padrão.
A sequência de caracteres em estilo C
A cadeia de caracteres do estilo C originou-se na linguagem C e continua a ser suportada em C++. Esta string é na verdade uma matriz unidimensional de caracteres que é terminada por um null caractere '\0'. Assim, uma string terminada em nulo contém os caracteres que compõem a string seguida por um null .
A seguinte declaração e inicialização criam uma string que consiste na palavra "Hello". Para manter o caractere nulo no final do array, o tamanho do array de caracteres que contém a string é um a mais que o número de caracteres na palavra "Hello".
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Se você seguir a regra de inicialização do array, poderá escrever a instrução acima da seguinte maneira −
char greeting[] = "Hello";
A seguir está a apresentação de memória da string definida acima em C/C++ -
Na verdade, você não coloca o caractere nulo no final de uma constante de string. O compilador C++ coloca automaticamente o '\0' no final da string quando inicializa a matriz. Vamos tentar imprimir a string mencionada acima -
Demonstração ao vivo
#include <iostream> using namespace std; int main () { char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; cout << "Greeting message: "; cout << greeting << endl; return 0; }
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Greeting message: Hello
C++ suporta uma ampla gama de funções que manipulam strings terminadas em nulo –
Sr.Nº | Função e Propósito |
---|---|
1 | strcpy(s1, s2); Copia a string s2 na string s1. |
2 | strcat(s1, s2); Concatena a string s2 no final da string s1. |
3 | strlen(s1); Retorna o comprimento da string s1. |
4 | strcmp(s1, s2); Retorna 0 se s1 e s2 forem iguais; menor que 0 se s1 |
5 | strchr(s1, ch); Retorna um ponteiro para a primeira ocorrência do caractere ch na string s1. |
6 | strstr(s1, s2); Retorna um ponteiro para a primeira ocorrência da string s2 na string s1. |
O exemplo a seguir faz uso de algumas das funções mencionadas acima -
Demonstração ao vivo
#include <iostream> #include <cstring> using namespace std; int main () { char str1[10] = "Hello"; char str2[10] = "World"; char str3[10]; int len ; // copy str1 into str3 strcpy( str3, str1); cout << "strcpy( str3, str1) : " << str3 << endl; // concatenates str1 and str2 strcat( str1, str2); cout << "strcat( str1, str2): " << str1 << endl; // total lenghth of str1 after concatenation len = strlen(str1); cout << "strlen(str1) : " << len << endl; return 0; }
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
strcpy( str3, str1) : Hello strcat( str1, str2): HelloWorld strlen(str1) : 10
A classe String em C++
A biblioteca C++ padrão fornece uma string tipo de classe que suporta todas as operações mencionadas acima, além de muito mais funcionalidade. Vamos verificar o seguinte exemplo -
Demonstração ao vivo
#include <iostream> #include <string> using namespace std; int main () { string str1 = "Hello"; string str2 = "World"; string str3; int len ; // copy str1 into str3 str3 = str1; cout << "str3 : " << str3 << endl; // concatenates str1 and str2 str3 = str1 + str2; cout << "str1 + str2 : " << str3 << endl; // total length of str3 after concatenation len = str3.size(); cout << "str3.size() : " << len << endl; return 0; }
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
str3 : Hello str1 + str2 : HelloWorld str3.size() : 10
Linguagem C
- Cadeia C#
- Operadores C++
- Comentários C++
- Modelos de classe C++
- Strings Java
- Java enum Strings
- Variáveis e tipos C++:int, double, char, string, bool
- Strings C++:strcpy(), strcat(), strlen(), strcmp() EXEMPLOS
- Strings em C:como declarar variável, inicializar, imprimir, exemplo
- Java - Classe de Strings