大きな整数を文字列で表す


5676561321などの一連の数字を入力します.カンマで区切られた出力が必要:5676561321
方法1:
#include <iostream>
using namespace std;

int main()
{
    int i=0,array[50]={0},n,j;
    cin>>n;
    
    while(n>0)
    {
        array[i++]=n%1000;
        n=n/1000;
    }
    
    for(j=i-1;j>0;j--)
        cout<<array[j]<<",";
    cout<<array[0];
    
    return 0;
}

メソッド1の最大の問題はint表現範囲を超えた場合にエラーが発生することです.例えば、入力
2147483647(2の31乗マイナス1)出力結果は2147483647.入力時
2147483648
結果は0.
注意:
C   int           ,            ,    32    ,int  32      ,    32 1, 2 32   1, 40  。
       (Java          ,          ),   1    ,          0  ,  31 1, 2 31   1 。
2 30   1G,  1000*1M,   10  ,   2  20   。

方法2:文字列の利用
#include <iostream>
#include <string>
using namespace std;

int main()
{
    int i,j,k,length,count=0;
    string s;
    cin>>s;
    length=s.size();
    if(length%3==0)
    {
        for(i=0;i<length-1;i++)
        {
            cout<<s[i];
            if((i+1)%3==0)
                cout<<",";
        }
        cout<<s[length-1];
    }
    else if((length%3)==1)
    {
        cout<<s[0]<<",";
        for(j=1;j<length-1;j++)
        {
            cout<<s[j];
            if(j%3==0)
                cout<<",";
        }
        cout<<s[j];
    }
    else if((length%3)==2)
    {
        cout<<s[0]<<s[1]<<",";
        for(k=2;k<length-1;k++)
        {
            cout<<s[k];
            count++;
            if(count%3==0)
                cout<<",";
        }
        cout<<s[k];
    }
    
    system("pause");
}