Você está na página 1de 4

www.tiexpert.

net

Pg. 1 de 4

Strings
Agora que j vimos vetores, o prximo passo entender as strings. Strings em C so tratados como vetores de tamanho determinado que podem armazenar qualquer caracter. Diferentemente de declarar apenas uma varivel do tipo char (que armazena apenas um caracter) a string uma cadeia de caracteres, ou seja, pode guardar quantos caracteres ns determinarmos. Portanto, para declararmos uma string, basta ns criarmos um vetor de caracteres dessa forma: char minhaString [50]; O nico problema das strings so o seu consumo de recursos. Por exemplo, se levarmos em conta o vetor de caracteres que acabamos de criar, apesar dele conter 50 posies, ns s poderemos digitar at 49 letras. Isso ocorre porque toda string deve ter um caracter terminal, que geralmente indicado pelo NULL (nulo). Isso quer dizer que um vetor de caracteres (string) de 50 posies ter 49 caracteres efetivos e um NULL indicando seu final.

Entrada de String
Para entrarmos com uma String no sistema usamos a mesma funo de entrada padro - cin. Ou seja, se quisermos que o usurio digite seu nome faramos da seguinte forma: #include <iostream> using namespace std; int main (void){ char minhaString [50]; cout << "Digite seu nome: "<<endl; cin >> minhaString; system("cls"); cout << "Seu nome e: " << minhaString << endl; system("pause"); return EXIT_SUCCESS; } Agora, outro problema ao tratarmos de strings em C/C++. Embora a funo cin consiga obter a string, ela sempre termina assim que pressionarmos o espao a primeira vez, ou seja, ele s consegue pegar uma palavra por vez. Ento, como vamos obter uma linha inteira? Bem, para obtermos uma linha inteira ns devemos fazer uso de um dos mtodos encontrados dentro de cin - o mtodo getline. O mtodo getline obtm uma linha de acordo com o tamanho definido no mtodo. Ento, o mtodo getline utiliza dois parmetros: 1. O nome da string; 2. O tamanho mximo que ser preenchido. Ento, usando o mesmo exemplo, apenas mudaramos a 6 linha. Vejamos: #include <iostream> using namespace std; int main (void){ char minhaString [50]; cout << "Digite seu nome: "<<endl; cin.getline (minhaString, 50); system ("cls"); cout << "Seu nome e: " << minhaString << endl; system("pause"); return EXIT_SUCCESS; } http://www.tiexpert.net/programacao/c/string.php

www.tiexpert.net

Pg. 2 de 4

Funes de String
Podemos fazer muitas coisas com Strings, como por exemplo, ver ser tamanho, juntar mais de uma palavra, comparar duas palavras diferentes, etc. Para isso, basta incluirmos uma biblioteca para tratamento de strings em C chamado - string.h.

Obter o tamanho de uma String


Para obter o tamanho de uma string usamos a funo strlen (que a juno do ingls String Length, que quer dizer, largura de string). Essa funo retorna o nmero de caracteres utilizados (incluindo os espaos se houver). Ela recebe como argumento apenas a string que deve ser verificada e retorna o nmero de caracteres encontrados. #include <iostream> #include <string.h> // ou tambm #include <cstring> using namespace std; int main (void){ int tamanho; char nome [100]; cout << "Digite seu nome: "<<endl; cin.getline (nome, 100); system ("cls"); tamanho = strlen (nome); cout << "Seu nome tem " << tamanho << " caracteres." << endl; system("pause"); return EXIT_SUCCESS; }

Comparar duas strings


H tambm uma forma de compararmos duas strings para ver ser ambas so iguais. A funo que determina isso strcmp. Embora C/C++ case sensitive, ou seja, diferencia maisculas de minsculas, isso no ir influenciar nessa funo. Essa funo retorna 0 se h igualdade entre as strings ou um nmero diferente de zero se no houver igualdade. Portanto, se quisermos fazer uma comparao de duas strings, procedemos da seguinte forma: strcmp (string1, string2). Vejamos o exemplo: #include <iostream> #include <cstring> using namespace std; int main (void){ char palavra1 [25], palavra2 [25]; cout << "Digite uma palavra: "<<endl; cin >> palavra1; cout << "Digite outra palavra: "<<endl; cin >> palavra2; system ("cls"); if (strcmp (palavra1, palavra2) == 0) cout <<palavra1<<" e igual a "<<palavra2<<endl; else cout <<palavra1<<" e diferente de "<<palavra2<<endl; system ("pause"); return EXIT_SUCCESS; }

Copiar uma String


Para copiar uma string para outra string usamos strcpy (que vem de String copy). Essa funo recebe dois argumentos: 1. a string para onde ser armazenada a cpia; 2. a string que ser copiada. Resumidamente, ele copia a segunda string para a primeira. Exemplo: http://www.tiexpert.net/programacao/c/string.php

www.tiexpert.net
#include <iostream> #include <cstring> using namespace std; int main (void){ char palavra1 [25], palavra2 [25]; cout << "Digite uma palavra: "<<endl; cin >> palavra1; strcpy (palavra2, palavra1); system ("cls"); cout<<"palavra1 = "<<palavra1<<endl; cout<<"palavra2 = "<<palavra2<<endl; system("pause"); return EXIT_SUCCESS; }

Pg. 3 de 4

Concatenar uma String


Concatenar uma String que dizer juntar. De uma forma mais simplria, como se dissssemos que a juno da palavra passa mais a palavra tempo igual a passatempo. Ou seja, essa funo - strcat - pega duas strings e junta o que tiver na primeira com o que tiver na segunda. Tome cuidado: Se concatenarmos duas strings e uma delas ou ambas forem vazias ocorrer um erro. No exemplo abaixo, faremos o seguinte: vamos obter o valor de duas strings e concaten-las formando uma nova string. #include <iostream> #include <cstring> using namespace std; int main (void){ char str1 [25], str2 [25]; cout << "Digite uma palavra: "<<endl; cin >> str1; cout << "Digite outra palavra: "<<endl; cin >> str2; strcat (str1, str2); system ("cls"); cout << "A juncao dessas duas strings "; cout << " e igual a "<<str1<<endl; system("pause"); return EXIT_SUCCESS; } Lidar com strings extremamente importante para a programao, pois a string a base de qualquer arquivo e principalmente controles de rotina (por exemplo: rotinas e procedimentos de banco de dados, o SQL; endereamento de arquivos; modificao de configuraes...). Abaixo esta um exemplo com todas as funes bsicas de manipulao de string vistas at aqui. Faa o download e bom estudos. #include <iostream> #include <cstring> using namespace std; int main (void){ char palavra1 [75], palavra2 [25], palavraConcatenada [100]; cout << "Digite outra palavra ou uma pequena frase: "<<endl; cin.getline (palavra1, 75); cout << "Digite uma palavra: "<<endl; cin >> palavra2; http://www.tiexpert.net/programacao/c/string.php

www.tiexpert.net
system ("cls"); cout << "String-1"<<endl; cout << "-> "<<palavra1<<endl; cout << "tem "<<strlen(palavra1)<<" caracteres"<<endl<<endl; cout << "String-2"<<endl; cout << "-> "<<palavra2<<endl; cout << "tem "<<strlen(palavra2)<<" caracteres"<<endl<<endl; if (strcmp (palavra1, palavra2) == 0) cout << palavra1<<" e igual a "<<palavra2<<endl; else cout << palavra1<<" e diferente de "<<palavra2<<endl; strcpy (palavraConcatenada, palavra1); strcat (palavraConcatenada, palavra2); cout << "\nA concatenacao de "<<palavra1<<" com "<<palavra2; cout << " resulta em "<<palavraConcatenada<<endl; system("pause"); return EXIT_SUCCESS; }

Pg. 4 de 4

Autor: Denys William Xavier Este artigo est sob Licena Creative Commons Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/by-nc-sa/2.5/br/ ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.

http://www.tiexpert.net/programacao/c/string.php