Laboratório de
Programação I
Carlos Oberdan Rolim
Ciência da Computação
Sistemas de Informação
Manipulando strings
** Créditos: Site: Dicas BCB - www.dicasbcb.com.br
AnsiString
O C++Builder implementa o tipo AnsiString como uma
classe.
Fornece vários métodos para tratamento de strings
A classe AnsiString possui um bom nível de independência
e flexibilidade nos controles onde é usada, uma vez que não
é descendente de Tobject, permitindo-nos realizar diversas
operações úteis com strings
AnsiString
Muitos controles usam propriedades da classe AnsiString.
Por exemplo, todos os controles que possuem rótulo (forms,
edits, panels, labels) usam AnsiString através da
propriedade Caption.
Outros controles como o EditBox usam a classe AnsiString
como base de seus textos (propriedade Text). Se
repararmos bem, notaremos que nós já temos usado e
implementado objetos AnsiString sem qualquer espécie de
declaração.
Em outra situação qualquer, a declaração e inicialização de
uma string sempre será necessária antes do uso respectivo.
A classe String é análoga a classe AnsiString
Uso de typedef faz a definição
AnsiString
A declaração de uma String é análoga à declaração de um
tipo básico, porém usando a palavra AnsiString seguida de
um nome válido C++. Eis um exemplo:
AnsiString Pais;
Também pode declarar uma variável dela com parênteses
vazios, determinando a chamada do construtor da classe.
Eis um exemplo:
AnsiString Animal();
Depois de declará-la, pode-se determinar o valor desejado
para a variável usando o nome escolhido. Eis um exemplo:
AnsiString Especie;
Especie = "Cachorro";
AnsiString
Pode-se utilizar também o construtor da classe
AnsiString Simbolo('T');
AnsiString Int(120);
AnsiString AloTher("Alô, Thérbio");
AnsiString PtoFlut(675.15);
AnsiString LongoInt(-73495745);
AnsiString DplPrec(2.15e28);
AnsiString
Uso dos construtores para uso em componentes
char Letra = 't';
Edit1 -> Text = AnsiString(Letra); um inteiro:
Ou então
Integer Numero = 256;
Edit1->Text = AnsiString(Numero);
AnsiString
As Strings são tratadas como um array de caracteres
ATENÇÂO: Começa em 1 e não em 0
MAIS ATENÇÃO AINDA: Se usado o indice 0 gera um ERRO
Exemplo mostrando o primeiro caracter da string em um
Label
String s = "Oi cara de boi";
Label1->Caption = s[1];
Funções AnsiString
Principais funções-membro da classe AnsiString
AnsiString& __fastcall Insert(const AnsiString& str, int index);
AnsiString& __fastcall Delete(int index, int count);
AnsiString& __fastcall SetLength(int newLength);
Int __fastcall Pos(const AnsiString& subStr) const;
AnsiString __fastcall LowerCase() const;
AnsiString __fastcall UpperCase() const;
AnsiString __fastcall Trim() const;
AnsiString __fastcall TrimLeft() const;
AnsiString __fastcall TrimRight() const;
AnsiString __fastcall SubString(int index, int count) const;
Insert()
AnsiString& __fastcall Insert(const AnsiString& str, int index);
insere uma string especificada dentro de AnsiString,
iniciando a inserção na posição determinada pela variável
index.
O exemplo abaixo leva um Label no Form. Quando o usuário
dá um clique no Label, o programa providencia a inserção de
uma string dentro de outra.
void __fastcall TForm1::Label1Click(TObject *Sender) {
AnsiString test = "O_ _está_feito";
Label1->Caption = test.Insert("grande_teste", 3);
}
Delete()
AnsiString& __fastcall Delete(int index, int count);
Remove um número especificado de caracteres de uma
string. Inicia a contagem para a remoção na variável
especificada por index, encerrando a exclusão com a
remoção do último caracter contado para completar count:
void __fastcall TForm1::Label1Click(TObject *Sender) {
AnsiString test = "O_grande_teste_está_feito";
Label1->Caption = test.Delete(3, 12);
Label1->Caption = test.Insert(" ", 3);
}
SetLength()
AnsiString& __fastcall SetLength(int newLength);
Determina um novo tamanho para a string, especificado por
newLength, desde que esse novo comprimento seja menor
do que o tamanho inicial. SetLength não pode aumentar o
tamanho da string:
void __fastcall TForm1::Label1Click(TObject *Sender) {
AnsiString test = "O_grande_teste_está_feito";
Label1->Caption = test.SetLength(14);
}
Pos()
int __fastcall Pos(const AnsiString& subStr) const;
Retorna a posição do primeiro caracter de uma substring
especificada na string. Se a substring não for encontrada na
string, Pos() retorna “zero”.
void __fastcall TForm1::Label1Click(TObject *Sender) {
AnsiString test = "O_grande_teste_está_feito";
Label1->Caption = test.Pos("está");
}
LowerCase() e UperCase()
AnsiString __fastcall LowerCase() const;
AnsiString __fastcall UpperCase() const;LowerCase()
Transforma todas as letras da string para letras minúsculas
e UpperCase() transforma todas para maiúsculas:
void __fastcall TForm1::Label1Click(TObject *Sender) {
AnsiString test = "O_grande_TESTE_está_FEITO";
Label1->Caption = test;
Label2->Caption = test.LowerCase();
Label3->Caption = test.UpperCase();
}
Trim() , TrimLeft() e TrimRight()
AnsiString __fastcall Trim() const;
AnsiString __fastcall TrimLeft() const;
AnsiString __fastcall TrimRight() const;
Podemos usar essas funções-membro para eliminar caracteres
em branco no início (TrimLeft()), no final (TrimRight()) e no início
e no final da string (Trim()):
void __fastcall TForm1::Label1Click(TObject *Sender) {
Label1->Color = clYellow;
Label2->Color = clYellow;
Label3->Color = clYellow;
Label4->Color = clYellow;
AnsiString test = " O grande teste está feito ";
Label1->Caption = test;
Label2->Caption = test.Trim();
Label3->Caption = test.TrimLeft();
Label4->Caption = test.TrimRight();
Substring()
AnsiString __fastcall SubString(int index, int count) const;
Retorna uma substring especificada de uma string. A
substring inicia a contagem dos caracteres em index e
termina de contá-los em count.
Exemplo:
// Coloca uma string em Edit1
Edit1 -> Text = "Meu pai se chama Julio Alves";
// Declara e inicializa a variável Frase com a string contida no
texto de em Edit1
AnsiString Frase = Edit1 ->Text;
/* Declara e inicializa a variável MeuPai com a string que
começa no caracter 18 e termina no 28 de Frase*/
AnsiString MeuPai = Frase.SubString(18, 28);
// Concatena string com MeuPai, imprimindo no Label1
Label1 -> Caption = "Papai se chama " + MeuPai;
Length()
Retorna o tamanho de uma string
Exemplo mostrando em um Label o tamanho da string
String s;
s = Edit1->Text;
Label1->Caption = s.Length();
Convertendo uma AnsiString para uma C
string
Existem algumas funções que exisgem o uso de uma string c
(terminada com caracter null). Nesse caso precisamos fazer
a conversão
AnsiString aStr = ”Ober";
char *Text = aStr.c_str();
Download

AnsiString