Resultados 1 a 5 de 5

Tópico: Strings em C++

  1. #1
    Membro
    Data de Ingresso
    Nov 2005
    Localização
    Minas Gerais :: Belo Horizonte
    Posts
    398

    Strings em C++

    Strings em C++

    Hi,

    Declarar, concatenar e imprimir strings em Delphi, Visual Basic, Python, Perl, dentre outras linguagens, são tarefas relativamente simples.
    Em C, são um pouco mais complexas. Veja:

    Código:
    #include <stdio.h>
    int main()
    {
    char minha_string[15] = "Minha string!";
    printf("%s",minha_string);
    return 0;
    }
    Para concatenar strings em C, teràamos que fazer:

    Código:
    #include <stdio.h>
    #include <string.h> // para usar strcat()
    int main()
    {
    char minha_string[15] = "Minha";
    strcat(minha_string," String!");
    printf("%s",minha_string);
    return 0;
    }
    Em C, não poderàamos fazer:

    Código:
    #include <stdio.h>
    int main()
    {
    char minha_string[15];
    minha_string = "Minha String!"; // errado
    printf("%s",minha_string);
    return 0;
    }
    Uma forma alternativa seria:

    Código:
    #include <stdio.h>
    #include <string.h> // para usar strcpy()
    int main()
    {
    char minha_string[15];
    strcpy(minha_string,"Minha String!"); // Correto
    printf("%s",minha_string);
    return 0;
    }
    Em C++,podemos trabalhar com strings de uma forma mais fícil, semelhante à forma como trabalhamos com strings em Delphi ou Visual Basic, por exemplo.

    Vejamos como declarar uma string em C++:

    Código:
    #include <iostream>
    using namespace std; // simplificar uso de funções, exemplo: std::cout = cout; std::cin = cin;
    
    int main()
    {
    string minha_string;
    return 0;
    }
    Bem simples não?

    Podemos inicializar strings em C++ de três formas diferentes:

    1)
    Código:
    #include <iostream>
    using namespace std; 
    int main()
    {
    string minha_string = "String!"; // ou string minha_string("String!");
    cout << minha_string; // Imprime: String!
    return 0;
    }
    No método acima, simplesmente inicializamos a string da mesma forma como fazemos em C.

    2)
    Código:
    #include <iostream>
    using namespace std; 
    int main()
    {
    string minha_string(5,'A');
    cout << minha_string; // Imprime: AAAAA
    
    return 0;
    }
    A declaração acima faz com que "minha_string" seja preenchida com 5 elementos - o caractere 'A'.
    A sintaxe bísica seria:
    string nome_string(NUMERO,CARACTERE);

    NUMERO:
    número de elementos;

    CARACTERE:
    caractere a ser repetido na string.

    3)

    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
        string minha_string("123ABC",1,4);
        cout << minha_string; // Imprime: 23AB
        return 0;
    }
    O método acima declara uma string contendo a string formada a partir do caractere na posição 1 da string "123ABC" (o caractere '2'), contendo 4 caracteres.

    Lolz, confuso não?
    Vejamos:

    Código:
    string minha_string = "ABCDEF";
    Esta string possui 5 caracteres. O primeiro caractere estí na posição 0, o segundo na posição 1, etc.

    Veja o esquema:
    'A' = 0;
    'B' = 1;
    'C' = 2;
    'D' = 3;
    'E' = 4;
    Quando, no exemplo acima, fazemos:

    Código:
     string minha_string("123ABC",1,4);

    A string "minha_string" irí conter a substring formada a partir do caractere '2' - jí que ele estí na posição 1 - até que a string principal (no caso "minha_string") tenha 4 caracteres: "23AB".

    A sintaxe bísica seria:

    string nome_string(STRING,POSICAO_INICIAL,TAMANHO);


    STRING:
    a string da qual os caracteres serão retornados;

    POSICAO_INICIAL:
    posição do primeiro caractere a ser retornado, começando por ZERO;

    TAMANHO:
    o tamanho que "nome_string" deverí ter.
    Ao contrírio da linguagem C, em C++, podemos atribuir/alterar o valor de uma string utilizando o operador =. Veja:

    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
        string str1,str2;
    str1 = "Valor1";    
    cout << str1 << endl; // Utilizou-se "endl" para imprimir uma quebra de linha; equivale a '\n'.
    str2 = "Valor2";
    cout << str1 << endl;
    
        return 0;
    }
    O programa atribui o valor "Valor1" à string "str1" e mostra o seu valor. Em seguida, o valor é alterado para "Valor2" e novamente é mostrado na tela.

    Pode-se facilmente concatenar strings utilizando o operador +. Vejamos diferentes exemplos:

    1)

    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
        string str1,str2;
    str1 = "Apenas mais";    
    str2 = " outra string";
    
    str1 = str1 + str2; // ou: str1 += str2
    cout << str1 << endl;
    
        return 0;
    }
    O program acima concatena duas strings definidas.

    2)
    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
        string str1;
    str1 = "Apenas mais";    
    
    str1 = str1 + " outra string";
    cout << str1 << endl;
    
        return 0;
    }
    O program acima concatena à string "str1" uma outra string : "outra string".


    3)
    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
        string str1,str2;
    str1 = "Apenas";    
    str2 = " mais";
    str1 = str1 + str2 + " outra string";
    cout << str1 << endl;
    
        return 0;
    }
    Hí a concatenação das strings "str1" e "str2", e logo após, o resultado é unido à string " outra string".

    4)
    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
        string str1;
    str1 = "Caractere: ";    
    str1 = str1 + 'A';
    cout << str1 << endl;
    
        return 0;
    }
    O programa retornaria "Caractere: A". Uma string é concatenada com um caractere =)


    5)
    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
        string str1 = "String em C++\n"; // '\n' = quebra de linha
        char str2[] = "string em C";
    
    str1 = str1 + str2;
    cout << str1 << endl;
    
        return 0;
    }
    Acima, unimos uma string em C++ com uma string em C.

    Analisando os exemplos acima, poderàamos fazer o seguinte esquema:

    string str;
    str = "STRING1";
    str = str + "STRING2";

    string str,str2;
    str = "STRING1";
    str2 = "STRING2";
    str = str + str2;

    string str,str2;
    str = "STRING1";
    str2 = "STRING2";
    str = str + str2 + "STRING3";

    string str;
    str = "STRING1";
    str = str + 'X'; // X = caractere

    string str1 = "STRING1";
    char str2[] = "STRING2"
    str1 = str1 + str2;
    A única observação é que não podemos fazer:

    string str = "lol";
    char str2[] = "string";

    str = str + str2 + "OUTRA STRING"; // não se pode concatenar um array com uma string através do operador +
    Além do operador + existe uma outra forma de concatenar strings: utilizando o método append. Veja:

    Veja:
    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
        string str1,str2;
    str1 = "XXX";    
    str2 = "YYY";
    
    str1.append(str2); // Concatena str1 com str2
    cout << str1;
        return 0;
    }
    Outro exemplo:

    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
        string str1;
    str1 = "XXX";    
    
    str1.append("YYY"); // Concatena str1 com a string "YYY"
    cout << str1;
        return 0;
    }
    Além do operador +, podemos utilizar os operadores: <, <=, ==, !=, > e >= para comparar strings.

    Veja:

    Exemplo 1: Verificando se as strings são iguais:
    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
        string str1,str2;
    
    cout << "Digite uma string: ";
    cin >> str1; // Obtém string digitada
    cout << "Digite outra string: ";
    cin >> str2; // Obtém outra string digitada
    
    if(str1 == str2)
     cout << "As string sao iguais";
    else
     cout << "\nAs string sao diferentes";
     
    
        return 0;
    }
    Note que, para atribuir um valor digitado a uma string, usamos: cin >> NOME_STRING.


    Exemplo 2: Verificando se uma string é maior ou menor que outra

    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
        string str1,str2;
    
    cout << "Digite uma string: ";
    cin >> str1; // Obtém string digitada
    cout << "Digite outra string: ";
    cin >> str2; // Obtém outra string digitada
    
    if(str1 < str2)
     cout << "A string: " << str1 << " e' menor do que a string " << str2 ;
    else
     cout << "A string: " << str1 << " e' maior ou igual a string " << str2 ;
     
    
        return 0;
    }
    Note que podemos mostrar vírios valores na tela através da função cout, utilizando o operador binírio <<.

    Ainda abordando o exemplo acima, imagine que as string sejam: "123" e "12345".
    A string "123" seria menor do que "12345", correto? Mas se por acaso tivéssimos: "123" e "abc"? Ambas têm o mesmo tamanho - e caracteres - mas uma é menor que a outra? Sim, "123" é menor do que "abc".

    Quando temos a situação acima, o programa verifica cada elemento da string para dizer se esta é maior ou menor que outra, através dos respectivos códigos ASCII de cada elemento. Observe o esquema:

    1 - 49
    2 - 50
    3 - 51

    a - 97
    b - 99
    c - 98
    Quando o programa se depara com a comparação 49 < 97, automaticamente é retornado que a string "123" é menor do que "abc", jí que não hí necessidade de analisar os outros elementos =)

    Vejamos agora alguns métodos relacionados a strings em C++:

    1) Retornado o caractere de uma determinada posição

    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
    string str1;
    str1 = "LOL!";
    
    cout << str1.at(0);
    
        return 0;
    }
    O programa retornaria "L".

    A sintaxe bísica seria:

    str.at(POS);

    Onde POS é a posição do elemento na string, començando por ZERO.
    2) Retornado uma string em C

    Código:
    #include <iostream>
    #include <stdio.h> // para usar printf()
    using namespace std;
    int main()
    {
    string str1;
    str1 = "LOL!";
    
    printf("%s",str1.c_str());
    
        return 0;
    }
    3) Limpando uma string

    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
    string str1;
    str1 = "LOL!";
    cout << str1;
    str1.clear();
    cout << str1;
    
        return 0;
    }
    4) Verificando se uma string estí vazia

    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
    string str1;
    if(str1.empty())
     cout << "Vazia!";
    
        return 0;
    }
    5) Localizando a posição da primeira ocorrência de um caractere em uma string:

    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
    string str1;
    str1 = "123xABC";
    
    int pos = str1.find('x');
    if(pos != string::npos)
     cout << "Posicao de 'x' na string: " << pos;
    else
     cout << "O caractere 'x' nao foi encontrado!";
     
        return 0;
    }
    A constante string::npos é retornada quando o caractere não é encontrado.

    6) Localizando a posição da primeira ocorrência de uma substring em uma string:

    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
    string str1;
    str1 = "123LOLABC";
    
    int pos = str1.find_first_of("LOL");
    if(pos != string::npos)
     cout << "Posicao de 'LOL' na string: " << pos;
    else
     cout << "A string 'LOL' nao foi encontrado!";
     
        return 0;
    }
    A constante string::npos é retornada quando a substring não é encontrada.


    6) Localizando a posição da última ocorrência de uma substring em uma string

    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
    string str1;
    str1 = "123LOLABC";
    
    int pos = str1.find_last_of("LOL");
    if(pos != string::npos)
     cout << "Posicao de 'LOL' na string: " << pos;
    else
     cout << "A string 'LOL' nao foi encontrado!";
     
        return 0;
    }
    A constante string::npos é retornada quando a substring não é encontrada.

    7) Retornado o tamanho de uma string
    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
    string str1;
    cout << "Digite uma string: ";
    cin >> str1;
    
    cout << "A string '" << str1 << "' possui " << str1.length() << " caractere(s)";
    
        return 0;
    }
    Pode utilizar o método size() ao invés de length():

    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
    string str1;
    cout << "Digite uma string: ";
    cin >> str1;
    
    cout << "A string '" << str1 << "' possui " << str1.size() << " caractere(s)";
    
        return 0;
    }
    8) Adicionando um caractere no final da string

    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
    string str1;
    str1 = "AB";
    str1.push_back('C');
    
    cout << str1;
    
        return 0;
    }
    9) Substituindo uma substring por outra
    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
    string str1;
    str1 = "XXX123";
    str1.replace(0,3,"LOL"); // Substitui 3 caracteres começando pelo primeiro - posição 0
    cout << str1;
    
        return 0;
    }
    A sintaxe bísica seria:

    str.replace(POSICAO,NUMERO,SUBSTRING);

    POSICAO:
    posicao inicial da qual deve-se começar a substituição, começando por ZERO;

    NUMERO:
    número de caracteres que serão substituàdos;

    SUBSTRING:
    substring que irí substituir os caracteres.
    10) Retornando uma determinada quantidade de caracteres de uma string

    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
    string str1,str2;
    str1 = "Mais um outro exemplo de uma string.";
    str2 = str1.substr(8);
    cout << str2;
    
        return 0;
    }
    11) Trocando o conteúdo de uma string por outra
    Código:
    #include <iostream>
    using namespace std;
    int main()
    {
    string str1,str2;
    str1 = "string1";
    str2 = "string2";
    cout << "str1 = " << str1 << endl << "str2 = " << str2 << endl << endl;
    
    str1.swap(str2);
    
    cout << "str1 = " << str1 << endl << "str2 = " << str2 << endl << endl;
    
    
        return 0;
    }
    O programa retorna:
    str1 = string1
    str2 = string2

    str1 = string2
    str2 = string1
    Bem, existem outros métodos, porém, estes são os principais...

    É isso...

    Bye =)

  2. #2
    Newbie
    Data de Ingresso
    Apr 2006
    Posts
    148
    exelente post

  3. #3
    Bem legal tutorial

  4. #4
    Newbie
    Data de Ingresso
    Jul 2006
    Localização
    futuro
    Posts
    137
    eu nao entendi direito pra q serve uma string pelo o que eu vi se eu estiver errado mi corrija..

    String e para interagir com uma pessoa por exemplo o programa faiz uma pergunta a pessoa responde o programa faiz outra pergunta e a pessoa responde e pra isso q serve uma string???

  5. #5
    Membro
    Data de Ingresso
    Nov 2005
    Localização
    Minas Gerais :: Belo Horizonte
    Posts
    398
    Hi,

    String é uma estrutura de dados muito utilizada em vírias linguagens de programação. Nós temos variíveis do tipo inteiro, caractere, float, double (extensão do tipo float), dentre outras. Podemos dizer que uma string é um outro tipo de variível - armazena uma seqüência de caracteres, que são letras, números e sàmbolos isolados.

    Veja os exemplos:

    10 -> inteiro;
    'A' -> caractere;
    10.5 -> float ou double

    Agora veja:

    "12345" -> não um inteiro, mas sim uma string =)

    Geralmente, uma string é delimitada por aspas " ".

    Além de poder interagir com o usuírio, como você mesmo disse, o uso de strings é muito difundido quando queremos ler dados de um arquivo, obter determinadas informações, armazenar textos, exibir alertas, dentre outras funções.

    É basicamente isso...

    Bye

Tópicos Similares

  1. Encriptando Strings
    Por Marcelo Moraes no fórum Delphi
    Respostas: 0
    Último Post: 08 Jul 2010, 16:48
  2. Arrays e Strings PHP
    Por rogerphp no fórum HTML, XHTML e CSS
    Respostas: 1
    Último Post: 17 Aug 2009, 12:37
  3. strings aleatórios
    Por _Guga_ no fórum C,C++
    Respostas: 17
    Último Post: 14 Mar 2008, 02:16

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •