Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 C++ Vetores e Literais Osmar de Oliveira Braz Junior 2 Objetivos ◼ Assuntos a serem abordados nesta apresentação Declaração, Acesso e Recuperação Vetores de Tipos Primitivos Estáticos e Dinâmicos Vetores de TAD Estáticos e Dinâmicos Vetores Bidimensionais Vetores Multidimensionais Manipulação de Literais Classe string 3 Vetores ◼ Vetores são coleções de tipos primitivos ou TAD e podem ser declarados de forma estática ou dinâmica. Os tipos devem ser conversíveis ao tipo em que foi declarado o vetor Um vetor de inteiros só pode receber inteiros. Pois o um vetor é uma variável composta homogênea. 4 Vetores ◼ Vetores são declarados colocando [] depois do nome do identificador. ◼ Sintaxe de declaração: int vetor[4]; ◼ Atribuindo valores: vetor[1] = 10; ◼ Recuperando valores: int x = vetor[1]; 5 Percorrendo Vetores ◼ Existem algumas formas de acesso ao conteúdo e endereços de um vetor. ◼ Acesso aos conteúdos Pelo índice Pelo endereço ◼ Acesso aos endereços Por referência ao índice Calculando devido a contiguidade 6 Percorrendo Vetores ◼ Lembre-se um vetor é uma variável contígua, portanto todos os valores estão alocados sequencialmente em memória. int vetor[] = {10,20,30,40}; vetor 0 10 1 20 2 30 3 40 7 Percorrendo Vetores pelo Índice ◼ E de costume percorrer um vetor utilizando um laço e uma variável inteira para acessar os índices e o conteúdo de suas posições. int vetor[] = {10,20,30,40}; for(int i = 0; i < 4; i++){ cout << "vetor["<<i<<"]=" << vetor[i] << endl; } 8 #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; int main(int argc, char *argv[]) { int vetor[] = {10,20,30,40}; cout << "Acesso ao conteudo Vetor por Indice" << endl; for(int i =0; i < 4; i++){ cout <<"Vetor["<<i<<"]=" << vetor[i] << endl; } return EXIT_SUCCESS; } Percorrendo Vetores pelo Índice Usa [i] para acessar uma posição do vetor. 9 Percorrendo Vetores por Endereços ◼ Considere o vetor: int vetor[] = {10,20,30,40}; cout << vetor[0]; //Saída 10 cout << *(vetor); //Saída 10 ◼ Um nome de vetor é simplesmente um ponteiro. ◼ Isto ocorre porque o endereço de vetor[0] é o mesmo que vetor, e vetor[1] é o mesmo que vetor+1 e assim por diante. ◼ Só é necessário acessar o conteúdo pelo manipulador de ponteiros *. 10 #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; int main(int argc, char *argv[]) { int vetor[] = {10,20,30,40}; cout << "Acesso ao conteudo Vetor por Endereco" << endl; for(int i =0; i < 4; i++){ cout <<"Vetor["<<i<<"]=" << *(vetor + i) << endl; } return EXIT_SUCCESS; } Percorrendo Vetores por Endereços Usa “*” para acessar a posição do vetor e o tamanho de um inteiro. 11 Exemplo Percorrendo Vetor #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; int main() { int vet[5]; //Declaração do vetor vet[0]=10; vet[1]=20; vet[2]=30; vet[3]=40; vet[4]=50; cout << ">> Acesso ao Conteudo 1" << endl; for(int i =0; i < 5; i++){ cout << "Vetor=" << vet[i] << endl; } cout << ">> Acesso ao Conteudo 2" << endl; cout << "===================" << endl; for(int i =0; i < 5; i++){ cout << "Vetor=" << *(vet + i) << endl; } cout << ">> Acesso aos Enderecos 1" << endl; for(int i =0; i < 5; i++){ cout << "Vetor=" << &vet[i] << endl; } cout << ">> Acesso aos Enderecos 2" << endl; cout << "vet=" << &vet << endl; for(int i =0; i < 5; i++){ cout << "Vetor=" << (vet+i) << endl; } return EXIT_SUCCESS; } 12 Inicialização de Vetores ◼ Vetores podem ser inicializados no momento em que são criados. Isto já define o tamanho do vetor. ◼ Sintaxe com especificação de tamanho: int vetor[4] = {10,20,30,40}; ◼ Sintaxe sem especificação de tamanho: int vetor[] = {10,20,30,40}; 13 #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; int main(int argc, char *argv[]) { //Com ou sem especificação do tamanho int vetor[] = {10,20,30,40}; cout << ">> Acesso ao Conteudo Vetor" << endl; for(int i =0; i < 4; i++){ cout << "Vetor[" << i << "]=" << vetor[i] << endl; } return EXIT_SUCCESS; } Exemplo Inicialização de Vetor 14 Percorrendo Vetores - Cuidados ◼ Em algumas linguagens o acesso(leitura e escrita) a posições além do limites declarados em um vetor é controlado e restringido pela própria linguagem. ◼ Em C++ este cuidado deve ser feito pelo programador. 15 #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; const int TAMANHO = 5; int main() { double vetor[TAMANHO]; for(int i =0; i < TAMANHO; i++){ vetor[i] = i; } cout << "Listando vetor" << endl; for(int i =0; i < TAMANHO+TAMANHO; i++){ cout << vetor[i] << endl; } return EXIT_SUCCESS; } Percorrendo Vetores - Cuidados Percorre além do tamanho definido no vetor! 16 Declaração e alocação de Vetores ◼ Vetores podem ser declarados a partir de Tipos primitivos TAD ◼ Vetores podem ser alocados de duas formas Estático Dinâmico 17 Vetores de Tipos Primitivos ◼ Estáticos Memória para alocação de variáveis criadas no inicio do programa. Uma vez criado ocupam este espaço até o final do programa. 18 #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; const int TAMANHO = 5; int main(int argc, char *argv[]) { int matricula[TAMANHO]; double media[TAMANHO]; for(int i = 0; i < TAMANHO; i++) { cout << "Digite a matricula:"; cin >> matricula[i]; cout << "Digite a media:"; cin >> media[i]; } for(int i = 0; i < TAMANHO; i++) { if (media[i] >= 7) { cout << "O aluno de matricula " << matricula[i] << " = > Aprovado: " << media[i] << endl; } else { cout << "O aluno de matricula " << matricula[i] << " = > Reprovado: " << media[i] << endl; } } return EXIT_SUCCESS; } Exemplo Vetor Primitivo Estático 19 Vetores de Tipos Primitivos ◼ Dinâmicos Memória para alocação de variáveis criadas dinamicamente Usando operador new. 20 #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; const int TAMANHO = 5; int main(int argc, char *argv[]) { int* matricula[TAMANHO]; double* media[TAMANHO]; for(int i = 0; i < TAMANHO; i++) { cout << "Digite a matricula:"; matricula[i] = new int; cin >> *matricula[i]; cout << "Digite a media:"; media[i] = new double; cin >> *media[i]; } for(int i = 0; i < TAMANHO; i++) { if (*media[i] >= 7) { cout << "O aluno de matricula " << *matricula[i] << " = > Aprovado: " << *media[i] << endl; } else { cout << "O aluno de matricula " << *matricula[i] << " = > Reprovado: " << *media[i] << endl; } } return EXIT_SUCCESS; } Exemplo Vetor Primitivo Dinâmico Instância uma posição do tipo inteiro para armazenar o dado. Usa o * para acessar o conteúdo criado. 21 Vetores de TAD ◼ Estático Memória para alocação de variáveis criadas no inicio do programa. Necessário uma estrutura para agrupar os tipos primitivos ou outros TAD Acesso aos membros por “.” 22 Exemplo Vetor TAD Estático #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; const int TAMANHO = 5; struct Aluno { int matricula; double media; }; int main(int argc, char *argv[]) { Aluno aluno[TAMANHO]; for(int i = 0; i < TAMANHO; i++) { cout << "Digite a matricula:"; cin >> aluno[i].matricula; cout << "Digite a media:"; cin >> aluno[i].media; } for(int i = 0; i < TAMANHO; i++) { if (aluno[i].media >= 7) { cout << "O aluno de matricula " << aluno[i].matricula << " = > Aprovado: " << aluno[i].media << endl; } else { cout << "O aluno de matricula " << aluno[i].matricula << " = > Reprovado: " << aluno[i].media << endl; } } return EXIT_SUCCESS; } Acesso aos membros da estrutura com o uso do ponto “.” 23 Vetores de TAD ◼ Dinâmico Memória para alocação de variáveis criadas dinamicamenteUsando operador new. Acesso aos menbros da estrutura por: ◼ -> ◼ (*ponteiro). 24 Exemplo Vetor TAD Dinâmico #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; const int TAMANHO = 5; struct Aluno { int matricula; double media; }; int main(int argc, char *argv[]) { Aluno* aluno[TAMANHO]; for(int i = 0; i < TAMANHO; i++) { cout << "Digite a matricula:"; aluno[i] = new Aluno; cin >> (*aluno[i]).matricula; cout << "Digite a media:"; cin >> aluno[i]->media; } for(int i = 0; i < TAMANHO; i++) { if (aluno[i]->media >= 7) { cout << "O aluno de matricula " << aluno[i]->matricula << " = > Aprovado: " << aluno[i]->media << endl; } else { cout << "O aluno de matricula " << (*aluno[i]).matricula << " = > Reprovado: " << (*aluno[i]).media << endl; } } return EXIT_SUCCESS; } Acesso aos membros da estrutura com o uso do ponto “.” a partir do conteúdo criado com o uso do “*”. 25 Vetores Bidimensionais ◼ Vetores bidimensionais em C++ são vetores de vetores, também conhecidos por Matriz. No exemplo abaixo temos uma matriz de ordem 3x2 de valores inteiros. Para inicializar uma matriz de ordem 3x2 basta especificar os exemplos linha a linha int matriz[3][2]; int matriz[3][2] = { {10,20}, {30,40}, {50,60} }; j 10 20 i 30 40 50 60 26 Vetores Bidimensionais = Matriz Coluna 0 Coluna 1 Linha 0 m[0][0] m[0][1] Linha 1 m[1][0] m[1][1] Linha 2 m[2][0] m[2][1] int matriz[3][2]; 27 Inicialização de Matrizes ◼ Matrizes podem ser inicializados no momento em que são criados mas é necessário especificar as dimensões exceto a primeira. ◼ Sintaxe: int matriz[2][2] = {{10,20},{30,40}}; ou int matriz[][2]= {{10,20},{30,40}}; 28 #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; int main(int argc, char *argv[]) { //Todas precisam de tamanho exceto a primeira int matriz[][2] = {{10,20},{30,40}}; cout << ">> Acesso ao Conteudo Matriz" << endl; for(int i =0; i < 2; i++){ for(int j =0; j < 2; j++){ cout << "Matriz[" << i << "," << j << "]=" << matriz[i][j] << endl; } } return EXIT_SUCCESS; } Exemplo Inicialização de Matriz 29 Vetores multidimensionais ◼ Vetores multidimensionais também são vetores de vetores. É possível criar toda a hierarquia (vetor de vetor de vetor...), para fazer vetores retangulares ... int prisma[3][2][2]; 30 Literais ◼ Literais ou strings são vetores de chars. Nada mais e nada menos. ◼ As strings são o uso mais comum para os vetores. ◼ Devemos apenas ficar atentos para o fato de que as strings têm o seu último elemento como um '\0'. ◼ Literais são delimitadas por aspas duplas “”. ◼ Caracteres são delimitadas por aspas simples ‘’. ◼ A declaração geral para uma string é: char nome_literal[tamanho]; 31 Literais ◼ Alocação de vetor de char char nome[50] = "CASA"; nome 0 'C' 1 'A' 2 'S' 3 'A' 4 '\0' 32 Exemplo Vetor Char #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; int main(int argc, char *argv[]) { char nome[10]= "CASA"; //char nome[]= "CASA"; int i = 0; while (nome[i] != '\0') { cout << "Letra[" << i << "]=" << nome[i] << endl; i = i + 1; } return EXIT_SUCCESS; } 33 Literais ◼ Devemos lembrar em uma string esta incluído o '\0' final. ◼ A biblioteca padrão do C possui diversas funções que manipulam strings estas bibliotecas são semelhantes ao C++. ◼ Estas funções são úteis pois não se pode, por exemplo, igualar(comparar) duas strings: string1==string2; /* NAO funciona */ 34 Exemplo Leitura Literal com espaços #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; int main(int argc, char *argv[]) { char nome[50]; cout << "Digite seu nome:"; cin >> nome; //digite um literal com espaços cout << "Seu nome e " << nome; return EXIT_SUCCESS; } ◼ A função gets() lê uma string do teclado. Sua forma geral é: ◼ Preenche automaticamente com "/0" ao final do literal. ◼ Não limita a quantidade de caracteres lido. gets(nome_da_string); 35 gets 36 Exemplo gets #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; int main(int argc, char *argv[]) { char nome[50]; cout << "Digite seu nome:"; gets(nome); //digite um literal com espaços cout << "Seu nome e " << nome; return EXIT_SUCCESS; } 37 Problemas com Buffer(stdin) ◼ Algumas vezes o buffer de entrada de dados(stdin) acumula caracteres. ◼ Isto gera lixo para a próxima leitura de um literal. ◼ Para resolver o problema limpe o buffer antes de ler um novo literal. char nome[50]; cout << "Digite o nome: "; fflush(stdin); gets(nome); 38 Exemplo fflush #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; int main(int argc, char *argv[]) { char palavra1[10], palavra2[10]; cout << "Digite palavra1:"; gets(palavra1); int x; cout << "Digite um valor inteiro:"; cin >> x; cout << "Digite palavra2:"; //fflush(stdin); //Execute a primeira vez comentando a linha gets(palavra2); cout << "Palavra1 : " << palavra1 << endl; cout << "Palavra2 : " << palavra2 << endl; return EXIT_SUCCESS; } ◼ Para resolver o problema da função gets() que não possui limite de tamanho use a função fgets() que lê uma string do teclado com uma tamanho fixo. Sua forma geral é: ◼ Necessário especificar o tamanho da string a ser lida e de onde deve ser lido, no caso do buffer padrão stdin. fgets(nome_da_string, tamanho, stdin); 39 fgets 40 Exemplo fgets #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; #define TAMSTR 10 //Define o tamanho da string int main(int argc, char *argv[]) { char nome[TAMSTR]; cout << "Digite seu nome:"; fflush(stdin); fgets(nome, TAMSTR, stdin); cout << "Seu nome e " << nome; return EXIT_SUCCESS; } Leitura de até 10(TAMSTR) caracteres a partir do buffer padrão stdin. 41 Copiando Literais - strcpy ◼ Como um literal é um vetor de char não é possível copiar uma variável literal para outra variável sem percorrer todo o vetor. ◼ Sua forma geral é: strcpy (string_destino,string_origem); ◼ A função strcpy() copia a string-origem para a string-destino. 42 Exemplo strcpy #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS #include <cstring> using namespace std; int main(int argc, char *argv[]) { char str1[50], str2[50]; cout << "Digite str1:"; gets(str1); strcpy(str2,str1); cout << "str2:" << str2; return EXIT_SUCCESS; } 43 Concatenando Literais - strcat ◼ A função strcat() tem a seguinte forma geral: strcat (string_destino,string_origem); ◼ A string de origem permanecerá inalterada e será anexada ao fim da string de destino. 44 Exemplo strcat #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS #include <cstring> using namespace std; int main(int argc, char *argv[]) { char str1[50], str2[50]; cout << "Digite str1:"; gets(str1); cout << "Digite str2:"; gets(str2); strcat(str1,str2); cout << "str1:" << str1; return EXIT_SUCCESS; } 45 Tamanho de Literais - strlen ◼ A função strlen() tem a seguinte forma geral: strlen(string); ◼ A função strlen() retorna um inteiro com o comprimento da string fornecida. O terminador nulo não é contado. Isto quer dizer que, de fato, o comprimento do vetor da string deve ser um a mais que o inteiro retornado por strlen(). 46 Exemplo strlen #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS #include <cstring> using namespace std; int main(int argc, char *argv[]) { char str1[50]; cout << "Digite str1:"; gets(str1); cout << "str1:" << strlen(str1); return EXIT_SUCCESS; } 47 Comparando Literais - strcmp ◼ A função strcmp() tem a seguinte forma geral: strcmp (string1, string2); ◼ A função strcmp() comparaa string1 com a string2. Se as duas forem idênticas a função retorna zero. Se elas forem diferentes a função retorna não-zero. 48 Exemplo 1 strcmp #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS #include <cstring> using namespace std; int main(int argc, char *argv[]) { char str1[50], str2[50]; cout << "Digite str1:"; gets(str1); cout << "Digite str2:"; gets(str2); cout << "Comparacao str1 e str2:" << strcmp(str1,str2); return EXIT_SUCCESS; } 49 Exemplo 2 strcmp #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS #include <cstring> using namespace std; int main(int argc, char *argv[]) { char nome1[50] = "abc"; char nome2[50] = "ABC"; cout << "Nome1:" << nome1 << " / Nome2:" << nome2 << endl; cout << "strcmp(nome1,nome2):" << strcmp(nome1,nome2) << endl; if (strcmp(nome1,nome2)==0) cout << "Nome1 e igual a Nome2" << endl; else cout << "Nome1 e diferente de Nome2" << endl; if (strcmp(nome1,nome2)<0) cout << "Nome1 maior que Nome2" << endl; if (strcmp(nome1,nome2)>0) cout << "Nome1 menor que Nome2" << endl; return EXIT_SUCCESS; } • Valor menor que 0(-1) se nome1 é maior que nome2. • Valor maior que 0(1) se nome1 é menor que nome2. 50 char* - Conversão ◼ A entrada dos dados muitas vezes é feita como vetor de char(* char), e para realizar operações matemáticas é necessário converter para o tipo numérico específico. (cstdlib) int atoi (const char* str); ◼ Converter char* em int double atof (const char* string ); ◼ Converter char* em double atol, atoll Herdadas do C 51 char* - Conversão #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS atoi, atof using namespace std; int main(int argc, char *argv[]) { char charint[] = "10"; char charfloat[] = "15.5"; cout << "charint:" << charint << endl; int rint = atoi(charint) + 10; cout << "rint:" << rint << endl; cout << "charfloat:" << charfloat << endl; float rfloat = atof(charfloat) + 10; cout << "rfloat:" << rfloat << endl; return EXIT_SUCCESS; } 52 Vetores de Literais ◼ Vetores de literais são na realidade são matrizes bidimensionais de char. char palavras[10][100]; ◼ Nesta declaração temos uma matriz chamada palavras de 10 literais onde cada literal pode ter até 100 caracteres. 53 Vetores de Literais #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS using namespace std; int main() { char palavras[10][100]; cout << "Lendo palavras" << endl; for(int i =0; i < 10; i++){ cout << "Palavra[" << i << "]="; fflush(stdin); gets(palavras[i]); } cout << "Listando palavras" << endl; for(int i =0; i < 10; i++){ cout <<"Palavra[" << i << "]=" << palavras[i] << endl; } return EXIT_SUCCESS; } 54 string ◼ Encapsula um vetor de char e suas operações de manipulação ◼ Fornece suporte para esses objetos com uma interface semelhante à de um contêiner padrão de bytes, mas adicionando recursos projetados especificamente para operar com strings de caracteres de byte único. ◼ Para utilizá-la é necessário o seguinte #include <cstring> 55 string Métodos Principais ◼ size_type size() const Retorna o tamanho da string ◼ size_type length() const Retorna o tamanho da string (sobrecarga do método Retorna o tamanho da string (sobrecarga do método size) ◼ bool empty() const Retorna true, caso a string esteja vazia ◼ string substr(size_type pos, size_type n) const Retorna uma string com n caracteres, iniciando na posição pos ◼ size_type find(const string& str, size_type pos) const Retorna a posição de inicio, caso a string str esteja inserida no objeto ◼ size_type copy(string *s, size_type n, size_type pos) const Copia até n elementos da string s, iniciando na posição pos do objeto ◼ string& insert(size_type pos, const string *s) Insere a partir da posição pos a string s 56 string Operadores ◼ O operador + pode ser utilizado para concatenar dois objetos da classe string string s1("C++ "), s2("Orientado a Objetos"); s1 = s1 + s2; //s1 contém "C++ Orientado a Objetos" ◼ O operador = (atribuição) pode ser utilizado com os objetos da classe string string s1("C++ "), s2; s2 = s1 //contém "C++ " ◼ Estes operadores não estão disponíveis para a string nativa do C/C++ (char*) 57 string - Leitura #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS #include <cstring> using namespace std; int main(int argc, char *argv[]) { string nome; cout << "Digite seu nome:"; getline(cin,nome); //digite um literal com espaços //cin armazena toda a string(linha) cout << "Seu nome e " << nome; return EXIT_SUCCESS; } 58 string - Comparação #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS #include <cstring> using namespace std; int main(int argc, char *argv[]) { string str1, str2; cout << "Digite str1:"; getline(cin, str1); cout << "Digite str2:"; getline(cin, str2); cout << "Comparacao str1 e str2:" << (str1 == str2); return EXIT_SUCCESS; } 59 string - Cópia #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS #include <cstring> using namespace std; int main(int argc, char *argv[]) { string str1, str2; cout << "Digite str1:"; getline(cin,str1); str2 = str1; cout << "str2:" << str2; return EXIT_SUCCESS; } 60 string - Tamanho #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS #include <cstring> using namespace std; int main(int argc, char *argv[]) { string str1; cout << "Digite str1:"; getline(cin,str1); cout << "str1:" << str1.length(); return EXIT_SUCCESS; } 61 string – Conversão ◼ A entrada dos dados muitas vezes é feita como string, e para realizar operações matemáticas é necessário converter para o tipo numérico específico. (string) int stoi (const string *str); ◼ Converter string em int float stof (const string *str); ◼ Converter string em float stol, stoll, stoul, strtol stod, stold GNU C++ 11 Projeto->Opções do Projeto 62 string – Conversão #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS #include <cstring> using namespace std; int main(int argc, char *argv[]) { string strint = "10"; string strfloat = "15.5"; cout << "strint:" << strint << endl; int rint = stoi(strint) + 10; cout << "rint:" << rint << endl; cout << "strfloat:" << strfloat << endl; float rfloat = stof(strfloat) + 10; cout << "rfloat:" << rfloat << endl; return EXIT_SUCCESS; } 63 Conversão - string ◼ As vezes é necessário converter de um tipo de dado numérico para string, e para realizar concatenação de strings string to_string (int val); string to_string (long val); string to_string (long long val); string to_string (unsigned val); string to_string (unsigned long val); string to_string (unsigned long long val); string to_string (float val); string to_string (double val); string to_string (long double val); GNU C++ 11 Projeto->Opções do Projeto 64 Conversão - string #include <iostream> //cout, endl #include <cstdlib> //EXIT_SUCCESS #include <cstring> using namespace std; int main(int argc, char *argv[]) { double numdouble = 10.15; int numint = 20; string saida = ""; saida = to_string(numdouble)+" e "+to_string(numint); cout << "Conversão = " << saida << endl; return EXIT_SUCCESS; } 65 Conclusão ◼ Vetores em C++ começam em 0, em algumas linguagens é possível determinar o intervalo. ◼ Cuidado ao listar vetores, pois C++ permite extrapolar os limites definidos. ◼ Cuidado ao usar vetores de TAD eles devem ser processados diferentemente de vetores de tipos primitivos. ◼ Literais em C++ são vetores de char e terminam com ‘\0’. ◼ As operações de manipulação de vetores e strings são especificas para C++. ◼ As operações de string retorna a string modificada. ◼ Ao usar string deve-se usar operaçõesespecificas sua comparação. ◼ O uso da classe String facilita o uso de manipulação de Literais. 66 Bibliografia/Referências ◼ Stroustrup, Bjarne. The C++ Programming Language. 2019. Disponível em: “http://www.stroustrup.com/C++.html” 67 Fim
Compartilhar