Вопрос

У меня есть например длинное число 12345678901, и я хочу получить отдельно каждую цифру, чтобы использовать его. Я очень сильно пытался, но я не сделал это так далеко? Есть идеи?

Но у меня есть проблемы со всеми из них, когда я стараюсь тем, что с несколькими 11 цифрами и больше (что то, что я хочу) моя программа перестает работать, я запускаю мою программу в Visual Studio в других номерах дела - это просто Хорошо .. Любая связь с тем, что мой номер длинный?

Это было полезно?

Решение

Это даст вам цифры в переменной b.

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

Другие советы

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

Один из способов преобразовать номер в строку (не уверен, какой метод для этого, но я знаю, что такие вещи существуют), а затем доступа к каждому символу строки по одному.

long residual= number;
int base= 10;

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

Вместо того, чтобы рассчитать цифры, вы можете получить то, что вы хотите, преобразовав его в строку:

// 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;
}

Это распечатает номера, скажем, если у вас есть 12345:

1
2
3
4
5

Так что вы можете обрабатывать каждый из них доступ к итератору *it как вышеуказанный код.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top