存放大数据

infsafe 2009-04-03 11:50:09
在win32编程里面。比如说我要产生int型的10000到100000000000000之间的全部的数据,我该怎么做啊?存到vector<int>里面?
另外,我还得把这些数字转换成字符输出。用wsprint,又该怎么办?
我是菜鸟,完全不会啊。
...全文
179 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
infsafe 2009-04-10
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 markul 的回复:]
把这个大楼分成多段来存
比如:1 200 300 400 500 600 700
用三个int的变量来存,一个存:1200;一个存:300500;一个存:600700
计算时,分段进行计算就可以了。
[/Quote]

这个想法十分好,感谢您!
infsafe 2009-04-10
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xiaocha 的回复:]
输出可以用 printf("%I64d\n", 1000000000000000);


C/C++ code
long long a = 1000000000000000;
// 或者 __int64 a = 100000000000000000;
printf("%I64d\n", a);
[/Quote]

谢谢!!!
infsafe 2009-04-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zbing0203 的回复:]
vc的吧 范围是-9223372036854775808~+9223372036854775807
[/Quote]
这么大??
aaaa3105563 2009-04-05
  • 打赏
  • 举报
回复
LZ 用字符串储存吧
deerwin1986 2009-04-05
  • 打赏
  • 举报
回复
大数库 可以自己来写 很简单的...
xiaocha 2009-04-05
  • 打赏
  • 举报
回复
输出可以用 printf("%I64d\n", 1000000000000000);


long long a = 1000000000000000;
// 或者 __int64 a = 100000000000000000;
printf("%I64d\n", a);
xiaocha 2009-04-05
  • 打赏
  • 举报
回复
这个范围可以用 long long 或者 __int64
Hayden_yang 2009-04-05
  • 打赏
  • 举报
回复
字符数组比较简单把
infsafe 2009-04-05
  • 打赏
  • 举报
回复
up 一下。
markul 2009-04-05
  • 打赏
  • 举报
回复
把这个大楼分成多段来存
比如:1 200 300 400 500 600 700
用三个int的变量来存,一个存:1200;一个存:300500;一个存:600700
计算时,分段进行计算就可以了。
zbing0203 2009-04-03
  • 打赏
  • 举报
回复
100000000000000这么大int早溢出了 win32不是有__int64吗
infsafe 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mabo321 的回复:]
引用楼主 infsafe 的帖子:
在win32编程里面。比如说我要产生int型的10000到100000000000000之间的全部的数据,我该怎么做啊?存到vector <int>里面?
另外,我还得把这些数字转换成字符输出。用wsprint,又该怎么办?
我是菜鸟,完全不会啊。


觉得 应该用 字符串存储……(文件 读取速度 慢)

另外,要把数字转换字符输出……用sprintf() 或 wsprintf() 不是wsprint.
O(∩_∩)O
[/Quote]

字符串存的话,长度是不是动态分配呢?
infsafe 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hairetz 的回复:]
100000000000000
普通32位数据类型肯定溢出了。
要么用字符串存,要么用大数库。
gmp就可以了。
[/Quote]

谢谢,我尝试一下大数库。
mabo321 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 infsafe 的帖子:]
在win32编程里面。比如说我要产生int型的10000到100000000000000之间的全部的数据,我该怎么做啊?存到vector <int>里面?
另外,我还得把这些数字转换成字符输出。用wsprint,又该怎么办?
我是菜鸟,完全不会啊。
[/Quote]

觉得 应该用 字符串存储……(文件 读取速度 慢)

另外,要把数字转换字符输出……用sprintf() 或 wsprintf() 不是wsprint.
O(∩_∩)O
liliangbao 2009-04-03
  • 打赏
  • 举报
回复
可以用字符串等来存储,然后再转换!
  • 打赏
  • 举报
回复
100000000000000
普通32位数据类型肯定溢出了。
要么用字符串存,要么用大数库。
gmp就可以了。

t1397018 2009-04-03
  • 打赏
  • 举报
回复
找不到可以放大数的把数据类型可以考虑自己定义,比如我用一个int存高16位,一个存低16位!
或者用字符数组来存,每一位做一个字符!
oyljerry 2009-04-03
  • 打赏
  • 举报
回复
这么大数据最好用字符串等来存储,然后再转换
mengde007 2009-04-03
  • 打赏
  • 举报
回复
100000000000000这么大,放在文件里面。
从文件里面读出来就是字符串
mabo321 2009-04-03
  • 打赏
  • 举报
回复
字符串存的话,长度是不是动态分配呢?
=================================
string 类型 和 容器 类型 分配一样。都有自己的allocator 它不是动态分配的,
string 类型 的长度可以增长啊……
// string s1 = "100000000000000";
// string s2 = s1 + "0";
加载更多回复(3)

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧