c ++中长数字的单独数字

时间:2010-12-02 23:23:29

标签: c++ long-integer digits

我有例如长号12345678901,我想分别得到每个数字来使用它。我试过很努力,但到目前为止我没有做到这一点?有什么想法吗?

但我在所有这些方面都有问题 当我尝试11位数以上(我想要的)时,我的程序停止工作 我在visual studio中运行我的程序 在其他情况下 - 较小的数字 - 就好了...... 与我的号码很长的事实有什么联系?

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

这将为您提供变量b中的数字。

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

答案 2 :(得分:1)

一种方法是将数字转换为字符串(不知道方法是什么,但我知道存在这样的事情),然后一次访问字符串的每个字符。

答案 3 :(得分:0)

long residual= number;
int base= 10;

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

答案 4 :(得分: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