栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++ string真的能存无限多的数据吗

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ string真的能存无限多的数据吗

目录
    • 前言
    • 测试
      • 十六位嵌入式开发环境
      • 32位环境
      • 少数服务器64位环境
      • 简便的测试方法
    • 小结

前言

在平时的c++数据类型的讨论中,我们有时会见到类似下图的言论:

string真的能存无限多的数据吗?今天,我们就来一探究竟吧!

测试 十六位嵌入式开发环境

大家可以在十六位嵌入式开发环境中输入这样一段代码(记得包含头文件,文章最后有更好的测试方法):

string s1 = "aaaaaaaa…aaaaa"; 
//因篇幅限制,省略了一部分a,实际总共65535个a

编译一下,发现编译器报了错。
为什么会这样呢,原来编译器里做了如下限制:

if (this.nerrs == 0 && var2 != null && var2 instanceof String 
&&   ((String)var2).length() >= 65535) //注意这里的65535,只要大于等于它,就报错。
 {        
 this.log.error(var1, "limit.string", new Object[0]);
 ++this.nerrs; }
32位环境

测试时可以仿照上面的方法,最大值是:4,294,967,295
大约占内存4G字节。

少数服务器64位环境

最大值是:18,446,744,073,709,551,615
大约占内存16E字节(1E = 2的30次方个G)。

简便的测试方法

可以通过std::string::max_size()函数获得最大值
示例:

string str;
str.max_size(); //记得包含头文件
小结

除编译器限制以外,string支持的字符串长度是根据系统环境的内存决定的。
也可以这样认为:string支持的字符串长度上限虽然有,但非常大,几乎用不到。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018241.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号