Você está na página 1de 18

ECT2303 - Linguagem de Programação

Strings

Diego R. C. Silva.

6 de Setembro de 2017

ECT2303 - Strings 1 6 de Setembro de 2017 1 / 18


Objetivo da aula

Apresentar Strings em C++:


Leitura e Escrita de Strings.
Exemplos de utilização de Strings.
Funções da biblioteca “string” de C++.

ECT2303 - Strings 2 6 de Setembro de 2017 2 / 18


String

Definição
Cadeia de caracteres.
Pode ser representada por um vetor de caracteres.
Terminada por ’\0’ (ou 0).

ECT2303 - Strings 3 6 de Setembro de 2017 3 / 18


Exemplos de inicialização
# include < iostream >
# define MAX_LENGTH 50
using namespace std ;
int main ( void ) {
char str1 [ MAX_LENGTH ];
char str2 [ MAX_LENGTH ] = " Alo Mundo " ;
char str3 [ MAX_LENGTH ];
str1 [0]= ’o ’;
str1 [1]= ’l ’;
str1 [2]= ’a ’;
str1 [3]= 0; // Terminar String

str3 [0] = ’o ’;
str3 [1] = ’k ’;
str3 [2] = ’ \0 ’; // Terminar String

cout < < str1 < < str2 < < str3 < < endl ;
return 0;
}
ECT2303 - Strings 4 6 de Setembro de 2017 4 / 18
Ler e Escrever Strings
/* *
* Exemplo de Ler / Escrever
*/
# include < iostream >
# define MAX_LENGTH 50
using namespace std ;

int main ( void ) {

char str [ MAX_LENGTH ];

cin . getline ( str , MAX_LENGTH ) ;


cout < < str < < endl ;

return 0;
}

cin<<str termina ao encontrar ’ ’ ou ’\n’

ECT2303 - Strings 5 6 de Setembro de 2017 5 / 18


Exemplo 1

Lembre, as Strings são vetores!


Como podemos calcular o tamanho (número de caracteres) de
uma String?
Fácil: contar o número de caracteres até encontrar 0.

ECT2303 - Strings 6 6 de Setembro de 2017 6 / 18


Exemplo: Copiar o Conteúdo de uma String

Como podemos copiar o conteúdo de una String s1 em s2 ?


Percorrer s1
s2 [i] = s1 [i]
Condição de parada: s1[i]==0

ECT2303 - Strings 7 6 de Setembro de 2017 7 / 18


Exercício

Escreva um programa que dadas duas Strings s1 e s2 determine se s1


é igual a s2 .

ECT2303 - Strings 8 6 de Setembro de 2017 8 / 18


Algumas Funções de Caracteres

Algumas funções da biblioteca ctype:


# include < ctype .h >

toupper:
char x = toupper ( ’a ’) ; // x = ’A ’

tolower:
char x = tolower ( ’A ’) ; // x = ’a ’

isdigit:
isdigit ( ’3 ’) // --> true
isdigit ( ’a ’) // --> false

ECT2303 - Strings 9 6 de Setembro de 2017 9 / 18


Exemplo: Minúsculas e Maiúsculas

Como converter uma cadeia de caracteres de letras minúsculas em


letras maiúsculas?
Percorrer a String
Em cada posição utilizar a função toupper:
str [ i ] = toupper ( str [ i ]) ;

ECT2303 - Strings 10 6 de Setembro de 2017 10 / 18


Exercício
É um número ?

Escreva um programa que, dada uma string, determine se a string


representa um número inteiro positivo.
Por exemplo,
a string "1287" representa um número inteiro.
a string "12a7" não representa um número inteiro.

ECT2303 - Strings 11 6 de Setembro de 2017 11 / 18


Exercicio
Concatenar 2 Strings

Escreva um programa que concatene duas Strings, ou seja, o


programa deve unir as duas strings.
Por exemplo, se concatenamos “bom” e “ dia”, o resultado é a String
“bom dia”

ECT2303 - Strings 12 6 de Setembro de 2017 12 / 18


Já sabemos:

copiar o conteúdo de uma String


comparar 2 strings
concatenar 2 strings

... mas será que preciso implementar as funções básicas para


manipular Strings?
Resposta: Não :-), vamos utilizar as funções da biblioteca padrão de
C++

ECT2303 - Strings 13 6 de Setembro de 2017 13 / 18


Biblioteca string
Precisamos incluir a biblioteca:
# include < cstring >

strlen(s): Tamanho de s:
char str [ MAX_LENGTH ] = " Alo mundo " ;
cout < < strlen ( str ) << endl ; // Imprime 9
strcpy(s1,s2): Copia s2 em s1
char str [ MAX_LENGTH ] ;
strcpy ( str , " bom dia " ) ;
cout < < str < < endl ; // Imprime bom dia
strcat(s1,s2): Concatena s2 ao final de s1
char s1 [ MAX_LENGTH ]= " bom " ;
char s2 [ MAX_LENGTH ]= " dia " ;
strcat ( s1 , " " ) ;
strcat ( s1 , s2 ) ;
cout < < s1 < < endl ; // bom dia

ECT2303 - Strings 14 6 de Setembro de 2017 14 / 18


strcmp(s1,s2): Retorna:
I 0 se s1 e s2 forem iguais
I < 0 se s1 < s2
I > 0 se s1 > s2
cout < < strcmp ( " ola " , " ola " ) << endl ; // 0
// ’o ’=111 , ’h ’= 104
cout < < strcmp ( " ola " , " hola " ) << endl ; // 7
// ’l ’=108 , ’n ’= 110
cout < < strcmp ( " ola " ," onda " ) << endl ; // -2

ECT2303 - Strings 15 6 de Setembro de 2017 15 / 18


Exemplo: procurar e substituir

Dada uma string s, substituir todas os espaços (’ ’) por ’-’;

Podemos utilizar strlen para saber o tamanho de s (laço for)

ECT2303 - Strings 16 6 de Setembro de 2017 16 / 18


Exercício: Palavra Palíndromo

Uma palavra é um palíndromo se pode ser lida tanto da direita para a


esquerda como da esquerda para a direita. Por exemplo:
anilina
radar
sopapos
Escreva um programa para determinar se uma palavra é palíndromo
ou não.

ECT2303 - Strings 17 6 de Setembro de 2017 17 / 18


Para casa

Dado o nome completo de uma pessoa imprimir apenas as iniciais


seguidas cada uma de ponto e espaço.

ECT2303 - Strings 18 6 de Setembro de 2017 18 / 18

Você também pode gostar