• Nenhum resultado encontrado

Bac004 - Parte 8

N/A
N/A
Protected

Academic year: 2021

Share "Bac004 - Parte 8"

Copied!
22
0
0

Texto

(1)

Strings - Funções de

(2)

String

Strings são utilizadas para representar

sequências de caracteres, como

frases, nomes de pessoas, cidades,

ruas, países, etc.

(3)

3

Funções de Tratamento de

Caractere



Pode-se definir um vetor de tipo char,

onde cada posição representa um

caractere.



O fim da cadeia é identificado com o

caractere nulo, por meio do ‘\0’.

(4)

Declaração de String



char nome[7];



char nome[ ] = {'U', 'N', 'I', 'F', 'E', 'I', '\0'};



char nome[ ] = "UNIFEI";

(5)

5

Declaração de String



É preciso declarar vetores de caracteres como

sendo um caracter mais longo que a maior

string que eles devem guardar (devido ao

caracter nulo).



A linguagem C/C++ possui funções para

manipulação de vetores de caracteres presentes

na biblioteca string.h ou cstring. Para consultar

funções dessa biblioteca acesse:

(6)

Manipulando Cadeias de

Caracteres



strlen (str1) – obtém o tamanho de uma

cadeia de caracteres str1 (o caractere nulo

não é considerado);

char nome[19] = "Teodomiro Santiago";

int tamanho = strlen(nome);

for (int i =0; i < tamanho ; i++){

cout<<"\nCaracter n."<<i+1<<":"<<nome[i];

}

(7)

7

Manipulando Cadeias de

Caracteres



strcat (str1, str2) – concatena a cadeia

identificada por str2 à cadeia str1. A

segunda permanece inalterada.

char stringDestino[40] = "Prezado Sr. ";

char stringOrigem[] = "Joao Pereira";

strcat(stringDestino, stringOrigem);

cout << "String Destino: " << stringDestino <<"\n";

cout << "String Origem: "<< stringOrigem;

A saída da tela será:

String Destino: Prezado Sr. Joao Pereira String Origem: Joao Pereira

(8)

Manipulando Cadeias de

Caracteres



strcmp (str1, str2) – compara duas cadeias

de caracteres e retorna um número inteiro,

que pode ser (maiúscula e minúscula são

diferentes):



Zero – se as duas cadeias são iguais;



Número menor que 0 – cadeia str1 for

alfabeticamente menor que str2;



Número maior que 0 – cadeia str1 for

(9)

9

Manipulando Cadeias de

Caracteres

char cor[] = "azul";

char resposta[10];

cout << "Qual e a cor do ceu? \n";

gets(resposta);

cout << strcmp(cor, resposta);

Caso o usuário insira como resposta azul, o valor impresso na tela será 0, para qualquer outra entrada, o valor será diferente de 0.

(10)

Manipulando Cadeias de

Caracteres



stricmp (str1, str2) – compara duas cadeias

de caracteres e retorna um número inteiro

que pode ser (maiúscula e minúscula são

iguais):



Zero – se as duas cadeias são iguais;



Número menor que 0 – cadeia str1 for

alfabeticamente menor que str2;



Número maior que 0 – cadeia str1 for

(11)

11

Manipulando Cadeias de

Caracteres



strcpy (str1, str2) – Copia a cadeia str2 para

a cadeia str1;

char stringDestino[] = "Prezado Sr. ";

char stringOrigem[] = "Joao Pereira";

strcpy(stringDestino, stringOrigem);

cout << "String Destino: " << stringDestino <<"\n";

cout << "String Origem: "<< stringOrigem;

A saída exibida na tela é: String Destino: Joao Pereira String Origem: Joao Pereira

(12)

Manipulando Cadeias de

Caracteres



gets – leitura de string do teclado, definida na

biblioteca cstdio. Ela captura todos os caracteres

digitados, inclusive os espaços em branco, até que

seja pressionada a tecla Enter.



No Windows você deverá usar a

função

fflush(stdin) antes de chamar a gets() para

limpar o buffer de entrada.

fflush(stdin); // limpa o buffer de entrada

gets (nome_da_string);

(13)

Manipulando Cadeias de

Caracteres - Exemplo

/*ProgC072.cpp - Programa que le uma string e imprima os caracteres separadamente na tela.*/ #include <cstring> #include <cstdio> #include <iostream> using namespace std; int main(){ char nome[30];

cout << "Escreva seu nome completo:\n "; fflush(stdin);

gets(nome);

int tamanho = strlen(nome); for (int i =0; i < tamanho ; i++){

cout<<"\nCaracter n." << i+1 << ": " << nome[i]; } return 0;}

Limpa o buffer

Recupera string do teclado

Recupera o Tamanho do string

(14)

Manipulando Cadeias de

Caracteres



strlwr() – converte os caracteres da string em

letras minúsculas



strupr() - converte os caracteres da string em

(15)

Manipulando Cadeias de

Caracteres - Exemplo

/*ProgCo73.cpp - Conversão de strings - maiúscula e minúscula*/ #include <iostream>

#include <string.h> using namespace std; int main(){

char palavra1[7] = "BrASiL";

cout << "String antes da conversao: " << palavra1 << endl; strupr(palavra1);

cout << "\nString depois da conversao usando funcao strupr(): " << palavra1; strlwr(palavra1);

cout << "\nString depois da conversao usando funcao strlwr(): " << palavra1; return 0;

}

Conversão para maiúscula

(16)

Manipulando Cadeias de

Caracteres - Exemplo

/* Prog074.cpp - Programa que apresenta a utilização de funções de manipulação de caracteres*/ #include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> using namespace std; int main() {

char nome[ ] = {'P', 'r', 'o', 'g', 'r', 'a', 'm', 'a', '\0'};

char nome1[ ] = "Programa"; char nome2[100], nome3[100]; int tamanho;

cout << "Variavel nome: " << nome << "\n";

cout << "Digite o sobrenome: "; gets(nome3);

cout<<"Sobrenome digitado:"<<nome3<<"\n"; cout << "Digite o primeiro nome: ";

cin >> nome2;

cout<<"Nome digitado: "<<nome2<<"\n\n"; if (strcmp(nome2, "Fabiana") == 0)

cout<<"Nome digitado foi Fabiana"<<"\n\n"; else

cout<<"Nome digitado nao foi Fabiana, foi:“ <<nome2<<"\n\n";

tamanho = strlen(nome3);

cout<<"Tamanho do Sobrenome e: “ <<tamanho<<"\n";

strcat (nome2, " "); strcat (nome2, nome3);

cout<<"Nome Completo:"<<nome2<<"\n";

Bibliotecas.

Declaração e Inicialização.

Cópia

Recupera do teclado com espaço

Recupera sem espaço Comparação

Tamanho Concatenação

(17)

17

Manipulando Cadeias de

Caracteres - Exemplo

/*ProgC075 - Programa que trabalha com strings*/

#include <iostream>

#include <iomanip>

#include <cstdlib>

using namespace std;

int main(){

char nome[30];

cout << "\nDigite o seu nome: ";

cin >> setw(30) >> nome;

cout << "\nSeu nome e: " << nome << "\n";

system("pause");

return 0;

}

Limita a quantidade de caracteres a serem recuperados.

(18)

Funçao getline



O problema com o exemplo anterior é que o objeto

cin

entende que um espaço em branco termina a entrada.



Neste caso, a função

cin.getline() deve ser utilizada. A função

cin.getline() aceita três argumentos um vetor de caracteres

em que a linha de texto será armazenada, um comprimento e

um caractere delimitador.



Por exemplo, o segmento de programa:

char frase[80];

std::cin.getline(frase, 80, \n);



declara o vetor frase de 80 caracteres e então lê uma linha de

texto do teclado. A função interrompe a leitura dos caracteres

quando é encontrado o caractere delimitador \n, quando o

indicador de fim de arquivo é inserido pelo usuário ou quando

(19)

19

Exemplo cin.getline

/*ProgC076 - Programa que trabalha com strings*/

#include <iostream>

#include <cstdlib>

int main(){

char nome[30];

std::cout << "\nDigite o seu nome: ";

std::cin.getline(nome, 30, '\n');

std::cout << "\nSeu nome e: " << nome << "\n";

system("pause");

return 0;

}

Pega tudo digitado até encontrar o enter ou até 30 caracteres.

(20)

Passando strings como

parâmetros para funções

Para passar uma string como

parâmetro para uma função utilizamos

o mesmo processo aprendido em

vetores.

void imprimeString(char string[]) {

int tamanho = strlen(string);

for (int i = 0; i < tamanho ; i++)

(21)

Passando strings como

parâmetros para funções

//ProgC077 - Funções com string

#include <iostream>

#include <string.h>

#include <cstdio>

using namespace std;

void leString(char string[]);

void imprimeString(char string[]);

int contaLetra (char string[], char letra);

char ultimaLetra (char string[]);

int main(){

char palavra[60];

leString(palavra);

imprimeString(palavra);

cout<<"\nQuantidade de letras 'h': “

<<contaLetra(palavra, 'h');

cout<<"\nUltima letra digitada: “

<<ultimaLetra(palavra);

return 0;

}

void leString(char string[]){

cout << "Digite uma string->";

fflush(stdin);

gets(string);}

void imprimeString(char string[]){

int tamanho = strlen(string);

for (int i = 0; i < tamanho ; i++)

cout<<"\nCaracter n." << i + 1 << ":

" << string[i];}

int contaLetra (char string[], char letra){

int contador = 0;

int tamanho = strlen(string);

for (int i = 0; i < tamanho ; i++) {

if (string[i] == letra)

contador++; }

return contador;}

char ultimaLetra (char string[]){

return string[strlen(string)-1];}

Protótipos

Chamadas das funções

Limpa buffer e pega string do teclado Tamanho

da string

Tratamento como vetor

(22)

Exercícios



Fazer um programa que leia uma

frase, calcule e mostre a quantidade

de letras da frase digitada.



Fazer um programa que leia uma

frase, calcule e mostre a quantidade

de palavras da frase digitada.

Referências

Documentos relacionados

Planejamento, elaboração, desenvolvimento e execução de projetos individuais ou em grupo no ensino de arte visual. 7TCC601 Trabalho de Conclusão de

3) Quando a sociedade for constituída num posto de atendimento “Empresa na Hora” diferente do da área geográfica da sede, será a Conservatória do Registo Comercial do posto

We conclude that providing domestic guidelines for treating UI positively influenced the UI domains (impact of incontinence, limitations of daily ac- tivities, physical

Pássaro Anilha Criador Cidade Classif.. Pássaro Anilha Criador

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of

Para discutirmos as práticas fundamentais para cultivo de soja em solos arenosos, é importante entender que temos diversas limitações, sendo as principais: fragilidade

GONÇALVES, Carlos Roberto. Direito civil brasileiro.. pagamento ou o pagamento em prestações, o que torna mais fácil a forma como será desempenhada a atividade, o

Representando o Vosso humilde servidor — Kyoshu, Yoichi Okada (*1) — reunimo-nos perante Vós e oferecemos nossa mais sincera e humilde oração a Vós: Vós que sois o Senhor