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

converter string -> int [c++]

Discussão em 'Programação' iniciada por toblesu, 1 de Setembro de 2008. (Respostas: 5; Visualizações: 19138)

  1. toblesu

    toblesu Power Member

    BOas pessoal....

    Retirei uma string dum ficheiro e precisava de a converter em inteiro a inserir numa lista e trabalhar com esse valor como se fosse inteiro.

    Nao percebo muito de C++, mas espero ter-me feito perceber.

    Transcrevo as linhas:

    Código:
    list<string>::iterator it=dados_equipamentos.begin();
    string dia=*(++it);
    int dia_=atoi(dia); // sei que o erro está no atoi (mas foi um teste de desespero!
     
    Última edição pelo moderador: 1 de Setembro de 2008
  2. MPalhas

    MPalhas Power Member

    podes por exemplo converter a string para um array de chars e depois usar a função atoi()

    Código:
    int numero;
    char[] string_convertida = string_original.c_str();
    
    numero = atoi(string_convertida);
    
    isto pode ser muito simplificado, mas foi só para perceberes melhor
     
  3. Mr_Miguel

    Mr_Miguel Power Member

    Usar o atoi()/arrays de caracteres é uma abordagem muito "à la" C ;)

    A maneira "à la" C++ de converter uma string para um inteiro é usar uma string stream. Exemplo:

    Código:
    #include <iostream>
    #include <string>
    #include <sstream>
    
    using namespace std;
    
    int main(void) {
       string a_minha_string = "123";
       stringstream ss(a_minha_string); //Temos agora uma string stream para processar a string "123"
       int o_meu_inteiro = 0;
       ss >> o_meu_inteiro; //Extrai o inteiro da string stream para a variável "o_meu_inteiro"
       cout << "O inteiro extraido da string e: " << o_meu_inteiro;
       return 0;
    }
    
     
    Última edição: 1 de Setembro de 2008
  4. toblesu

    toblesu Power Member

    Consegui solucionar o meu problema, usei na mesma o atoi, mas da seguinte forma:

    Código:
    string dia_=*(++it);
    int dia=atoi(dia_.c_str());
    seguindo então um pouco a lógica do M_Palhas...

    obrigado
     
    Última edição pelo moderador: 2 de Setembro de 2008
  5. OubeLa

    OubeLa Power Member

    Uma maneira porreira de fazer isto:

    Código:
    #include <sstream>
    using std::stringstream;
    
    //....
    
    string st = "12"; //a string que queremos converter
    int numero; //depois de convertido o numero fica guardado aqui
    
    stringstream s(st);
    s >> numero;
    //...
    
    E já está convertido.
     
  6. bsd

    bsd Power Member

    Outra, para quem usa as bibliotecas boost (www.boost.org):

    Código:
    #include <boost/lexical_cast.hpp>
    #include <string>
    
    ...
    ...
    
    using boost::lexical_cast;
    using std::string;
    
    string c = "1234";
    int i = lexical_cast<int>(c);
    string s  = lexical_cast<string>(i);
    
    ...
    
     

Partilhar esta Página