• Nenhum resultado encontrado

Processos Numéricos Avançados para Eletrônica – Renan Caron Viero

N/A
N/A
Protected

Academic year: 2019

Share "Processos Numéricos Avançados para Eletrônica – Renan Caron Viero"

Copied!
6
0
0

Texto

(1)

CLASSE STRING 02

Esta aula dará continuidade ao estudo da classe string, apresentando mais algumas características e métodos dessa classe muito útil.

A

CESSANDO

C

ARACTERES

I

NDIVIDUAIS

Para acessar caracteres individuais em um objeto string, a sintaxe utilizada é muito semelhante às strings do C-ANSI. Estude o exemplo abaixo:

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1("TESTANDO");

cout << "String Criada: " << str1 << endl;

cout << str1[5] << endl; //acessando o sexto caractere... system("PAUSE");

return 0; }

Progra ma 1 Acessando ca ra cteres indi vi duais.

Atente que, para uma string com n caracteres, a indexação da string começa em 0 e vai até n - 1.

É possível utilizar uma função membro para realizar a mesma tarefa, basta utilizar o método at. Estude o Programa 2.

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1("TESTANDO");

cout << "String Criada: " << str1 << endl;

cout << str1.at(5) << endl; //acessando o sexto caractere... system("PAUSE");

return 0; }

Progra ma 2 Acessando ca ra cteres indi vi duais utilizando método.

A vantagem em se utilizar o método at é que a classe verifica limites, impedindo o acesso

a áreas fora dos limites da string.

O

M

ÉTODO

S

WAP

Na classe string existe um método dedicado para trocar o valor de uma string pela outra. Trata-se do método swap. A utilização deste método pode ser particularmente interessante

(2)

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1("STRING A"); string str2("STRING B"); str1.swap(str2);

cout << "str1 = " << str1 << endl; cout << "str2 = " << str2 << endl; system("PAUSE");

return 0; }

Progra ma 3 Swap.

M

ÉTODOS PARA

M

ODIFICAÇÃO E

V

ERIFICAÇÃO DO

T

AMANHO DA

S

TRING

Uma gama de métodos permite obter e modificar as características relacionadas ao tamanho da string. Como fora visto, a função-membro length, exatamente com o método size,

retorna o tamanho da string (sem contar qualquer terminador nulo). Dentro desse contexto existe uma função que permite alocar mais memória para uma string. Trata-se do método resize.

Estude atentamente o Programa 3 e o resultado ao se executar o mesmo.

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1("STRING A");

cout << "str1 = " << str1 << endl;

cout << "Tamanho da String = " << str1.size() << endl;

str1.resize(str1.size() + 5);

cout << "str1 = " << str1 << endl;

cout << "Tamanho da String = " << str1.size() << endl; system("PAUSE");

return 0; }

Progra ma 4 Métodos size e resize.

Percebe-se que ao se imprimir str1 após aumentar sua capacidade não houve

modificação alguma no conteúdo. Isso ocorre pois a função resize preenche os caracteres com

caracteres nulos.

(3)

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1;

cout << "Tamanho da String = " << str1.size() << endl;

cout << "Tamanho maximo possivel = " << str1.max_size() << endl; system("PAUSE");

return 0; }

Progra ma 5 Método ma x_si ze.

Existe outro método que retorna se a string está ou não está vazia. Trata-se do método

empty, que retorna verdadeiro caso a string esteja vazia e falso caso a string não esteja vazia.

Estude o Programa 6. Veja como outro método é utilizado. O método clear limpa o

conteúdo de uma string.

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1;

if(str1.empty()) cout << "str1 esta vazia" << endl; else cout << "str1 nao vazia" << endl;

str1 = "OPA";

if(str1.empty()) cout << "str1 esta vazia" << endl; else cout << "str1 nao vazia" << endl;

str1.clear(); //método que limpa a string

if(str1.empty()) cout << "str1 esta vazia" << endl; else cout << "str1 nao vazia" << endl;

system("PAUSE"); return 0;

}

Progra ma 6 Método empty.

M

ÉTODOS PARA

B

USCA DE

C

ARACTERES E

S

TRINGS

A classe string disponibiliza muitos métodos que realizam buscas em strings. O método

find verifica se a string passada como seu parâmetro está contida em seu objeto. Em caso

positivo, o método retorna o índice onde ocorreu a coincidência. Em caso negativo, npos é

retornado. npos é um atributo constante público da classe string, que convertida em int

(4)

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1("ABACATE"); int a;

a = str1.find("AC");

if(a != str1.npos) //npos é publica... geralmente npos é -1... {

cout << "Encontrada ocorrencia de AC na string " << str1; cout << " no indice " << a << endl;

}

else cout << "nenhuma ocorrencia\n"; system("PAUSE");

return 0; }

Progra ma 7 Método fi nd.

Existem outros métodos dedicados para busca. O método rfind busca a primeira

ocorrência de uma string, como find, porém rfind “varre” a string de trás pra frente.

find_first_of e find_last_of procuram, respectivamente, a primeira e última

ocorrência de um conjunto de caracteres em uma string. Os caracteres de interesse da busca são inseridos em uma string como parâmetros do método. Existem ainda dois métodos que procuram a não ocorrência de caracteres. Trata-se das funções membro find_first_not_of e find_last_not_of. Estude com cuidado o Programa 7.

#include <iostream> #include <string> using namespace std; int main(void) {

string str1("ABACZAS.XCAZB.ACYC"); int a;

cout << str1 << endl;

cout << "Primeira ocorrencia de AC: " << str1.find("AC") << endl; cout << "Ultima ocorrencia de AC: "<< str1.rfind("AC") << endl;

cout << "Primeira ocorrencia de Z,X,Y ou . : " << str1.find_first_of("XYZ.") << endl; cout << "Ultima ocorrencia de Z,X,Y ou . : " << str1.find_last_of("XYZ.") << endl;

cout << "Primeira nao ocorrencia de A,B,C ou .: " << str1.find_first_not_of("ABC.") << endl; cout << "Ultima nao ocorrencia de A,B,C ou .: " << str1.find_last_not_of("ABC.") << endl; system("PAUSE");

return 0; }

Progra ma 8 Outros métodos de busca .

M

ODIFICANDO

S

TRINGS

(5)

O método erase apaga a string a partir de um índice passado como parâmetro da função.

O método replace troca os caracteres da string, a partir de um ponto especificado. Observe os

exemplos abaixo.

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1("ABACZAS.XCAZB.ACYC"),s1,s2,s3; int a,b;

a = str1.find("."); //obtém indice do primeiro ponto b = str1.rfind("."); //obtém indice do segundo ponto cout << str1 << endl;

s1 = str1;

s1.erase(a); //apaga tudo do primeiro ponto pra frente... cout << s1 << endl;

s2 = str1;

s2.erase(b); //apaga tudo do segundo ponto pra frente...

s2.erase(0,(a+1)); //apaga de do indice zero (a+1) caracteres...

cout << s2 << endl; s3 = str1;

s3.erase(0,(b+1)); //apaga de do indice zero (b+1) caracteres...

cout << s3 << endl; system("PAUSE"); return 0;

}

Progra ma 9 Método erase.

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1("TESTANDO REPLACE"); int a;

str1.replace(9,3,"OPA"); //(pos_ini,quantos_caracteres,string) cout << str1 << endl;

a = str1.find("OPA"); a += 3;

str1.erase(a);

cout << str1 << endl; system("PAUSE"); return 0;

}

Progra ma 10 Método repla ce.

(6)

#include <iostream> #include <string> using namespace std;

int main(void) {

string str1("TESTANDO INSERT"); str1.insert(9,"OPA ");

cout << str1 << endl; system("PAUSE"); return 0;

}

Progra ma 11 Método insert.

Exercício 1 Crie um programa que leia do teclado duas strings. Suponha que essas duas strings sejam um número de série de um produto, sendo este composto por duas partes, a primeira representa o tipo da peça, e a segunda o lote. As duas partes do código são demarcados por um caractere ponto. Os campos não possuem, necessariamente, o mesmo tamanho. Faça um programa que compara as strings e informa se as peças pertencem ao mesmo lote e/ou são do mesmo tipo. Utilize as funções de busca para localizar o caractere ponto.

Exercício 2 Escreva um programa que ordena alfabeticamente um vetor de strings. O vetor deverá ser obtido via teclado. Utilize apenas letras maiúsculas ou apenas minúsculas.

Exercício 3 Escreva funções para extrair a parte real e imaginária de um número complexo. O número complexo deverá ser passado para as funções como uma string, no formato: a+jb. Uma função deverá retornar a parte real, e a outra deverá retornar a parte imaginária. Para realizar a conversão de uma string para um float, baseie-se no exemplo abaixo:

#include <iostream> #include <string> #include <cstdlib> using namespace std;

int main(void) {

string s = "1.8734"; float a;

a = atof(s.data()); //s.data() retorna um ponteiro para char para a string cout << a << endl;

system("PAUSE"); return 0;

}

Progra ma 12 Conversão de s tring pa ra floa t.

Referências

Documentos relacionados

O desfile é conduzido pelo Comandante Militar do Planalto, seguido de representantes da Marinha do Brasil, do Exército Brasileiro, da Força Aérea Brasileira, da Polícia

A probabilidade de ocorrência de ataques especulativos e crises cambiais foi crescente em função da oferta de moeda nacional, da taxa real efetiva de câmbio, da taxa internacional

[r]

Por outro lado, a PMPA tem autuado as empresas que emitem notas fiscais para recebimento dos valores de locação alegando que, como os valores das locações não

O projeto de reestruturação é ainda mais amplo e inclui a mudança de sede da companhia para os Estados Unidos, a rescisão do acordo de acionistas e uma oferta de ações para

Assim, mesmo tendo à disposição no mercado agrotóxicos de alta tecnologia para controle químico de pragas que atingem suas lavouras, os produtores de hortaliças não

Esse endereço de e-mail também pode ser utilizado para enviar perguntas para que Ajahn Mudito responda durante o retiro – isso caso você queira fazer a pergunta de maneira anônima

Mesmo que para Deus tudo seja possível, não significa que Ele irá resolver todos os nossos problemas e realizar milagres contínuos para aliviar nosso sofrimento.. As manifestações