【发布时间】:2014-04-15 02:24:56
【问题描述】:
我在将字符串转换为 int 时遇到问题,需要在每个 std::list 元素中保存一个 5 位数字。我用这个:
for(int i =0; i< e.length(); ++i)
{
tmp = tmp*10+ e[i] - '0';
++rads;
if(rads>4)
{
numbs.push_back(tmp);
rads=0;
tmp=0;
}
}
如果输入的数字是:
10000 00012 02345 00001
在列表中我会得到:
10000 12 2345 1
所有问题都是保存后不丢失零
rads>4 或 rads==Rads
我也尝试过:
保存为基础#define-d Rads
for(int i =0; i< e.length(); ++i)
{
tmp = tmp*10+ e[i] - '0';
if(tmp>=Rads) // Rads defined as 10000
{
cumul = cumul*10+tmp/Rads;
tmp = tmp%Rads;
}
if(cumul>=Rads) // Rads defined as 10000
{
numbs.push_back(cumul);
cumul = 0;
}
}
我已阅读并查看了与此相关的各种源代码和文章,其中没有合适的解决方案(不是代码,但至少是想法)或解决方案是保存为 int/char [一位数] .一个是最简单的方法,但是处理一个只占用 2^4 位的 int 将太昂贵。这就是为什么我正在寻找在 x32 字中保存 5 位整数的方法,因此可以适应工作时间限制并避免重写已实现的“+ - / * %”代码 在搜索或多或少接近我的问题是How to split big numbers?
【问题讨论】:
-
数字永远不会有前导零。仅在打印值时添加前导零。