たとえば、長い番号 12345678901 があり、それを使用するために各桁を個別に取得したいと考えています。すごく頑張ったのに、ここまで来れなかったの?何か案は?
しかし、11桁以上のものを試してみると、それらすべてに問題があります(私が望むものです)私のプログラムは動作を停止します他のケースではビジュアルスタジオでプログラムを実行しています-小さい数字--結構です..私の番号が長いという事実と何か関係がありますか?
たとえば、長い番号 12345678901 があり、それを使用するために各桁を個別に取得したいと考えています。すごく頑張ったのに、ここまで来れなかったの?何か案は?
しかし、11桁以上のものを試してみると、それらすべてに問題があります(私が望むものです)私のプログラムは動作を停止します他のケースではビジュアルスタジオでプログラムを実行しています-小さい数字--結構です..私の番号が長いという事実と何か関係がありますか?
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
これにより、変数の数字が得られますb
。
long a = 12345678901;
while(a > 0) {
long b = a % 10;
a /= 10;
}
1 つの方法は、数値を文字列に変換し (そのためのメソッドが何であるかはわかりませんが、そのようなものが存在することは知っています)、文字列の各文字に一度に 1 つずつアクセスすることです。
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
したがって、上記のコードとしてイテレータにアクセスして、それぞれを処理できます。