1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

C++ strings

Discussão em 'Programação' iniciada por Alexander1989, 1 de Dezembro de 2008. (Respostas: 14; Visualizações: 1960)

  1. Alexander1989

    Alexander1989 Power Member

    Pessoal encontro-me com o seguinte problema !

    Tenho um programa que a certa altura pede uma data, que contem o [ano|mes|dia|hora|minuto], mas isto tudo junto como passo a exemplificar no exemplo:

    Código:
     
    200812312359
    
    Mas isto e carregado para uma string, e não e lido como um inteiro, porque tem de ser efectuados testes a data, para alem de a capcidade maxima de um inteiro nao suportar um numero tão grande !

    A questão é: Como é que eu posso passar partes da string para um inteiro? exemplo:

    A parte da string '2008' passava a ser um inteiro com o valor 2008!

    E assim por adiante !

    Se alguem me pudesse ajudar !!! : D
     
  2. IComeFromBehind

    IComeFromBehind Power Member

    Mas cabe dentro de um long long. Portanto é só fazer divisões e restos.
     
  3. m00s

    m00s Power Member

    procura pela função ATOI (ascii to integer)

    entretanto podes separar a string nos campos ano|mes|dia|hora|minuto.
     
  4. Alexander1989

    Alexander1989 Power Member


    Isso era capaz de dar, mas como regra sou obrigado carregar para uma string ! Ai é que esta a dificuladade...
     
  5. Alexander1989

    Alexander1989 Power Member

    Ou seja separar em substrings? Mas iria cair no mesmo problema, nao conseguir ler aquilo para ter um valor numerico.
    Eu vou necessitar de saber o valor numerico para comparar com outras, para ver a data mais antiga ! Ou a mias recente, dependendo dos casos!
     
  6. Alexander1989

    Alexander1989 Power Member


    Ok ja pesquisei sobre aquela função, penso ser isso mesmo que eu necessito !

    Obrigadão!
     
  7. IComeFromBehind

    IComeFromBehind Power Member

    Última edição: 1 de Dezembro de 2008
  8. m00s

    m00s Power Member

    não vai funcionar pq?
     
  9. Alexander1989

    Alexander1989 Power Member

    Mas a função atoi e só para 'const char' pelo menos é o que diz na definição do cppreference..

    Aquilo pode-se utilizar em strings?


    E já agora alguém sabe como dividir uma string em substrings?
     
  10. beat-

    beat- Power Member

  11. OubeLa

    OubeLa Power Member

    Podes. Fazes atoi(a_tua_string.c_str());
     
  12. Alexander1989

    Alexander1989 Power Member

  13. Alexander1989

    Alexander1989 Power Member

    Sou um bocado lerdo a isto ! xD

    'a_tua_string.c' podes explicar para que o .c? e Depois o resto já agora?
     
  14. OubeLa

    OubeLa Power Member

    É .c_str() ;)

    http://www.cplusplus.com/reference/string/string/c_str.html

    Basicamente o que faz é transformar uma string num char *, ou seja, transformar uma string de C++ numa string de C, visto que a função atoi(const char * str) é uma função de C.

    Código:
    string mystring = "1212";
    int mynumber = atoi(mystring.c_str());
    cout << mynumber << endl;
    
    Vai aparecer

    Código:
    1212
    Mas existe uma maneira de converter isto em C++, usando a biblioteca <sstream>.

    Código:
    #include <sstream>
    using namespace std;
    
    string mystring = "1212"
    stringstream ss(mystring);
    int mynumber;
    ss >> mynumber;
    cout << mynumber << endl;
    
    Para converter para outro formato é só declarar o mynumber com o tipo que quisermos, funciona exactamente igual.
     
  15. Alexander1989

    Alexander1989 Power Member


    Já vi que ambas resultam ! mas como isto e um trabalho em C++, penso que vou utilizar a sstream. Se bem que a outra era mais facil !

    Estou a ver que aqui é só patrões de programação !

    Muito obrigado a todos : D
     

Partilhar esta Página