2010-12-02 5 views
0

たとえば、長い数字12345678901があり、それを使用するために別々の桁を取得したいと考えています。私は本当に頑張ったが、これまでにやったことはありませんでしたか?何か案は?Cの長い数字の別個の数字

が、私は(私が何をしたいという)11桁、より多くの持つものをしようとすると、私はそれら のすべてで問題を抱えている私のプログラムは、私は他のケースでのVisual Studio に私のプログラムを実行している を動作を停止 - 小さな数字 - ちょうど良いです.. 私の番号が長いという事実との任意の接続?

+0

[整数をその桁数に分割する](http://stackoverflow.com/questions/4207696/split-an-integer-into-its-digits-c) –

答えて

2

これはあなたの変数bの桁を与えます。

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

Np、これは便利です –

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

一つの方法は、数値を文字列に変換することになり、その後、一度に文字列1の各文字にアクセスする(方法はそのためですが、私は存在するようなことを知っているかわかりません)。

代わりに数字を計算する、あなたは文字列に変換することにより、あなたが欲しいものを得ることができます
+0

これはitoa関数で行うことができます – user387049

+0

sprintf(myString、 "%d"、myNumber); –

+0

Yikes :)なぜboost :: lexical_cast (myNumber)だけではないのですか?私は 'lexical_cast'がC++ 0xの標準ライブラリの一部になっていると思います(私はチェックする必要があります)。 –

0
long residual= number; 
int base= 10; 

do 
{ 
    long digit= residual%base; 
    std::cout << digit << '\n'; 
    residual/= base; 
} while (residual!=0); 
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にアクセスして、それぞれを処理することができます。

関連する問題