Pregunta

Tengo, por ejemplo, el largo número 12345678901 y quiero conseguir por separado cada dígito para usarlo. He intentado muy duro pero no lo hacen hasta ahora? Algunas ideas?

pero tengo un problema en todas ellas cuando trato de los que tienen un número de 11 dígitos y más (que lo que yo quiero) mi programa deja de funcionar Estoy corriendo mi programa en Visual Studio en otros números de casos de menor - es muy bien .. alguna relación con el hecho de que mi número es largo?

¿Fue útil?

Solución

Esto le dará dígitos en b variable.

long a = 12345678901;
while(a > 0) {
   long b = a % 10;
   a /= 10;
}

Otros consejos

std::vector<int> digits;

while(number > 0)
{
   digits.push_back(number%10); //push the last digit in
   number /= 10; //truncate the digit
}

std::reverse(digits.begin(), digits.end()); // the digits were in reverse order

Una forma sería convertir el número en una cadena (no estoy seguro lo que el método es para eso, pero sé que estas cosas existen) y luego acceder a cada carácter de la cadena a la vez.

long residual= number;
int base= 10;

do
{
    long digit= residual%base;
    std::cout << digit << '\n';
    residual/= base;
} while (residual!=0);

En lugar de calcular los dígitos, se puede obtener lo que desea, convirtiéndola en una cadena:

// This converts the binary representation of the long into a string.
std::stringstream ss;
ss << long_number;
std::string number_as_string = ss.str();

// Then visit all the characters of the string.
for (std::string::const_iterator it = number_as_string.begin();
     it != number_as_string.end();
     ++it)
{
    std::cout << *it << std::endl;
}

Esto imprimirá los números, por ejemplo, si usted tiene 12345:

1
2
3
4
5

Así se puede procesar cada uno de ellos el acceso a la *it iterador como el código de seguridad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top