C++
Home

Manipulação de strings

As funções de C++ para manipular string estão dentro da biblioteca padrão cstring.

Sempre que você usar uma dessas funções deve estar ciente de que o array recepitor deve conter o espaço necessário para armazenar o resultado!!

strcpy ( s2, s1 ) Copia o string s1 para o s2. Retorna o valor de s2
strncpy( s2, s1, size_t ) Copia no máximo size_t caracteres de s1 para s2. Retorna s2.
strcat( s1, s2 ) Anexa a string s2 para o string s1. O primeiro caractere de s2 será gravado por cima caractere nulo terminal de s1.
strncat( s1, s2, size_t) Anexa no maximo n caracteres de string s2 para o string s1. O primeiro caractere de s2 será gravado por cima caractere nulo terminal de s1.
strcmp( s1, s2 )

Compara o string s1 com string s2. A função retorna um valor 0, menor que 0, ou maior que 0, se s1 for igual a, menor que, ou maior que s2.

strncmp( s1, s2, size_t ) Compara até n caracteres do string s1 com string s2. A função retorna um valor 0, menor que 0, ou maior que 0, se s1 for igual a, menor que, ou maior que s2.
strlen( s1 ) Determina o comprimento de string s1.

Observe um exemplo para as funções strcpy e strncpy

#include <iostream>

using std::cout;
using std::endl;

#include <cstring> // biblioteca para manipulação de strings

int main()
{

   char x[] = "Nossa Palavra";
   char y[25], z[15];

   cout << "O string no array x eh: " << x << endl;
   cout << "O string no array y eh: " << strcpy( y, x ) << endl;

   strncpy( z, x, 2 ); // nao copia o caracter nulo
   z[ 14 ] = '\0';

   cout << "O string no array z eh: " << z << endl;

   std::cin;
   return 0;
}

Exemplo com as funções strcat e strncat

#include <iostream>
using std::cout;
using std::endl;

#include <cstring>

int main()
{
   char a1[20] = "Mortal ";
   char a2[] = "Kombat" ;

   cout << a1 << "\n" << a2 << endl << endl;
   cout << strcat( a1, a2 ) << endl;
   cout << "a1 = " << a1 << endl;
   cout << strncat ( a1, a2, 3 ) << endl;

   std::cin;
   return 0;
}

Exemplo com as funções strcmp e strncmp

#include <iostream>
using std::cout;
using std::endl;

#include <cstring>

int main()
{
  char a1[] = "F";
  char a2[] = "F";
  char a3[] = "t";
  char a4[] = "A";

  cout << strcmp( a1, a2 ) << endl ; // igual 0
  cout << strcmp( a1, a3 ) << endl ; // diferente menor -1
  cout << strcmp( a1, a4 ) << endl ; // diferente maior 1

  std::cin;
  return 0;
}

Exemplo com Token

A função strtok quebra a string em unidades léxicas. Uma unidade léxica é uma sequencia de caracteres separados por caracteres delimitadores.
São necessários multiplos strtok para continuar a separar a string.
Por isso, tenha em mente que, as chamadas subsequentes a strtok vão conter NULL como primeiro argumento. O argumento NULL diz para strtok que a separação deve continuar apartir da posição na string salva pelo ultimo strtok.

#include <iostream>
using std::cout;
using std::endl;

#include <cstring>

int main()
{
   char token[] = "10;9;8;7";
   char *totoken;

   totoken = strtok( token, ";" ); // a função modifica a string token!!

   while ( totoken != NULL )
   {
      cout << totoken << endl;
      totoken = strtok ( NULL, ";" );
   }

   std::cin;
   return 0;
}

Exemplo para strlen   

#include <iostream>
using std::cout;
using std::endl;

#include <cstring>

int main()
{
   char a1[20] = "Mortal ";
   char a2[] = "Kombat" ;

   cout << strlen( a1 ) << endl << strlen( a2 ) << endl;

   std::cin;
   return 0;
}

 

Perguntas??? Email