读书人

简单的字符串有关问题

发布时间: 2012-02-23 22:01:35 作者: rapoo

简单的字符串问题
因为数字较大,想用字符串类型保存数字。当数字前包含多于的0时去掉,比如0021
改为21,0000改为0;因为不知道输入的数字的位数,
想定义string a


[解决办法]
#include <iostream>
#include <string>
using namespace std;

int main()
{
string str;
cin> > str;

while(str.find_first_of( '0 ') == 0 && str.size()> 1)
{
str = str.substr(1,str.size()-1);
}

cout < <str < <endl;
return 0;
}
[解决办法]
楼主随便看看大数运算的例子吧:

比如,一个最简单的 大数加法的:
//大数求和(这里可以通过调整Num_Len的来限制数的最大位数)
#include <stdio.h>
#include <string.h>
#define Num_Len 10000
int main()
{
char LN[2][Num_Len];
long MinLen,i,LN_Len[2];
int jw=0,flag,flag1,equal,Temp; //进位:jw 下标:长度更小的那个数的下标flag

printf( "Please input two Large Number less than %ld bit\n ",Num_Len);
scanf( "%s%s ",&LN[0],&LN[1]);

LN_Len[0]=strlen(LN[0]);
LN_Len[1]=strlen(LN[1]);

equal=LN_Len[0]==LN_Len[1]?1:0;
flag=LN_Len[0] <LN_Len[1]?0:1;
MinLen=LN_Len[flag]-1;
flag1=1-flag;
LN_Len[flag1]=LN_Len[flag1]-MinLen-1;

for(i=MinLen;i> =0;i--)
{
Temp=LN[flag1][LN_Len[flag1]+i]+LN[flag] <i> +jw;
if(Temp> =106)
{
jw=1;
LN[flag1][LN_Len[flag1]+i]=Temp-58;
}
else
{
jw=0;
LN[flag1][LN_Len[flag1]+i]=Temp-48;
}
}
if(equal==0)
{
Temp=LN[flag1][LN_Len[flag1]+i]+jw;
if(Temp> =58)
{
jw=1;
LN[flag1][LN_Len[flag1]+i]=Temp-10;
}
else
{
jw=0;
LN[flag1][LN_Len[flag1]+i]=Temp;
}

}
printf( "两数之和为:\n ");
if(jw==1) printf( "%d ",jw);
printf( "%s\n ",LN[flag1]);

return -1;
}

读书人网 >C语言

热点推荐