Como converter apenas um item de um conjunto de caracteres para inteiro? [RESOLVIDO]

1. Como converter apenas um item de um conjunto de caracteres para inteiro? [RESOLVIDO]

Danrley
dansenpir

(usa Arch Linux)

Enviado em 12/11/2016 - 02:01h

Tentei a função atoi, mas ele serve apenas para a string inteira, não dá para pegar partes dela e preciso pegar partes para resolver um algoritmo aqui.


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 15/11/2016 - 04:48h

Vamos por partes.

atoi() não é comando, mas sim uma função.

Você não disse se está usando C ou C++.

A resposta do XProtoman diz respeito ao C++. Você está usando C++?

Além disso, a resposta do XProtoman indica como pegar uma substring composta, potencialmente, por vários caracteres, mas você indicou quer apenas um caráter de cada vez. Sendo esse o caso, mesmo em C++ é melhor usar o operador de indexação (ou a função membro at()) para chegar ao caráter. Aliás, não é apenas “melhor” -- você terá de usá-lo (ou então vai dar mais voltas).

3. Re: Como converter apenas um item de um conjunto de caracteres para inteiro? [RESOLVIDO]

M.
XProtoman

(usa Fedora)

Enviado em 12/11/2016 - 08:44h

Use substr para pegar partes da String.

#include <iostream>
#include <string>

int main()
{
std::string a = "Debian GNU/Linux 7.11";
std::cout << a.substr(17, 4) << std::endl;
std::cout << std::stoi(a.substr(17, 4)) << std::endl;
std::cout << std::stod(a.substr(17, 4)) << std::endl;
return 0;
}


Resultado:
$ ./a.run 
7.11
7
7.11


____________________
“Mas nós sabemos que a razão de a maioria estar aqui, é a nossa afinidade com a desobediência!” (Morpheus)


4. Re: Como converter apenas um item de um conjunto de caracteres para inteiro? [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 12/11/2016 - 09:50h

Em C, caracteres individuais já são valores inteiros. Assim, você não precisa de uma conversão muito complexa.

A única “dificuldade” é que, por exemplo, o caráter '0' tem um valor diferente do inteiro 0. Na tabela ASCII, o caráter '0' tem o valor inteiro 48, o caráter '1' vale 49, e assim por diante.

Se você tiver uma variável c, do tipo char (ou qualquer outro tipo inteiro), que contém um caráter numérico, e quiser saber o valor representado por aquele caráter (que é diferente da posição que ele ocupa na tabela de caracteres), basta você usar a seguinte expressão.

c-'0' 


Essa expressão funciona para conjuntos de caracteres em que os caracteres que representam os algarismos estejam em posições contíguas na tabela de símbolos. É o caso no ASCII, Unicode e até mesmo no bizarro EBCDIC.


5. Re: Como converter apenas um item de um conjunto de caracteres para inteiro?

Danrley
dansenpir

(usa Arch Linux)

Enviado em 14/11/2016 - 23:38h

O que eu quero é fazer o seguinte: o usuário digitar um número inteiro de 4 digitos, eu converter as partes desse número para int e fazer parte[0] e parte[1] + parte[2] e parte[3] e se o resultado ao quadrado for o mesmo que o número digitado, dizer que o número tem tal característica.
Vou tentar o que o Xprotoman falou.



6. Re: Como converter apenas um item de um conjunto de caracteres para inteiro?

Danrley
dansenpir

(usa Arch Linux)

Enviado em 15/11/2016 - 11:41h

paulo1205 escreveu:

Vamos por partes.

atoi() não é comando, mas sim uma função.

Você não disse se está usando C ou C++.

A resposta do XProtoman diz respeito ao C++. Você está usando C++?

Além disso, a resposta do XProtoman indica como pegar uma substring composta, potencialmente, por vários caracteres, mas você indicou quer apenas um caráter de cada vez. Sendo esse o caso, mesmo em C++ é melhor usar o operador de indexação (ou a função membro at()) para chegar ao caráter. Aliás, não é apenas “melhor” -- você terá de usá-lo (ou então vai dar mais voltas).


Sim, é C++.
Não entendi o restante.
Para somar as posições, peguei variáveis e armazenei cada uma das posições em uma variável diferente e depois concatenei a posição 0 e 1 e a posição 2 e 3 em duas variáveis distintas, porém agora não consigo converter para int, para poder fazer a soma e então elevar ao quadrado, para fazer o algoritmo funcionar.
A função substr não funcionou, a função atoi retorna erro... Já não sei mais o que fazer.
O que seria o operador de indexação?


7. Re: Como converter apenas um item de um conjunto de caracteres para inteiro? [RESOLVIDO]

Danrley
dansenpir

(usa Arch Linux)

Enviado em 28/01/2017 - 13:31h

Putz! Havia me esquecido deste tópico! Peço desculpas por ter ficado tanto tempo em aberto, sendo que já resolvi o problema.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts