免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1768 | 回复: 2
打印 上一主题 下一主题

[C++] [自答了]2个问题:1.文本取入一个 string 的数量上限;2.这样用 stl 标准吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-23 20:03 |只看该作者 |倒序浏览
1.下面代码是否说明 string 类型的变量存储字符上限为 1024E+09 个 char 呢?
string 有能力读写 1TB 以内的文本文件吗?

#include<iostream>
  using std::cout;using std::endl;
#include<string>
  using std::string;
#include<vector>
  using std::vector;
#include<cmath>

int main(){
  double k(1024);

  string s("");

  vector<string> v(1,"");
    v.push_back("Ki");v.push_back("Mi");v.push_back("Gi");

  for(int i(0);i!=4;++i){
    cout << double(s.max_size())/pow(k,i) << " " << v.at(i) << "B" << endl;}

return 0;}


2.下面代码有问题吗?
#include<iostream>
  using std::cout;using std::endl;
#include<string>
  using std::string;
#include<vector>
  using std::vector;

int main(){

  vector<string> v(1,"asdjkhadgsgadhagd");

  v.back()+="sahdgsah";

  cout << v.back().size() << endl;

return 0;}


[ 本帖最后由 乌克兰白鼠 于 2009-6-24 00:57 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-06-24 00:42 |只看该作者
可能是我提的问题太无聊了,60人看了没人回答~只好自问自答了.
string 极限受下列条件限制
1) string::size_type 类型的极限(想超过 4G-1 除非自定义一个类型或者在64位字长的系统上)
2) 操作系统的用户空间限制,例如 32 位系统 2G 用户空间 + 2G 系统空间 = 4G 地址空间(一下砍了一半 2G-1,除非换操作系统否则没救)
3) 当前可用内存(此限制浮动,要是你的内存太小就没办法了)

我的机器实际可作 >pow(1000,3) 以上个 char 的分配.精确数值未测太慢
有兴趣又有好机器且有闲的人可以测一下
既然 string 有这么多限制还敢不敢用,放心大胆用, string 受的限制 char 数组什么的是一样的。
尤其是在被3限制时 string 带有安全性的同时耗用性能极少

第二个问题:虽然教科书没教,不过很正常就这么用,使 c++ 得有点想象力~想错了编译器会告诉你的~

[ 本帖最后由 乌克兰白鼠 于 2009-6-24 00:44 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-06-24 01:43 |只看该作者
我帮楼主顶下,呵呵
今天刚看到string
特殊的stl容器。

它的max_size()能输出正确的最大值吗?

好像有一个非标准的容器,rope (粗绳)。 好像用来处理比较长的字符串的吧,这个没细了解。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP