c++运行错误: string subscript out of range
问题来源: B组 PAT1057 PAT1079
两个样例:
PAT1057:
//char two[10000];
//string two = new string[100];
string two;
int i = 0;
while (sum != 0) {two[i++] = sum % 2 + '0';sum /= 2;
}
PAT1079:
string s;
int up = 0;
int sum = 0;
int k = 0;
for (int i = s1.size() - 1; i >= 0; i--) {sum = s1[i] - '0' + s2[i] - '0';//运行时报错: string subscript out of ranges[k++]=((sum + up) % 10 + '0');up = (sum + up) / 10;
}
相关资料:
查阅后,细看了这个链接,初步解决问题:(7条消息) c++程序运行时出现string subscript out of range--CSDN问答
总结与思考:
1.string subscript out of range: 即字符串边界溢出
溢出: 对string s未初始化,如果要对s进行操作,需对s进行初始化,给其分配相应的存储空间
初始化: 为string变量分配内存空间 (没有空间,谈何操作)
通俗解释: 存在string s的空间大小在访问下标为k=0的数组元素时,都无法正常访问的可能性
2.string是动态分配类型,问题转为: 动态分配类型变量未初始强行以下标形式访问元素
首先,明确string的动态分配不是根据下标分配,而是所储存的数据大小
而,下标访问操作是动态分配的空间大小确定后才能进行的操作
插入内容: 动态内存类型可以根据插入内容的大小调控其空间
string虽然是动态内存,但不会自动分配所需空间,如果未对string插入内容,下标访问操作就
会报错,故需要先让string分配到所需大小的空间
3.string动态分配内存的三种方式
1. insert函数 2. += 3. =" "
4.对小标题2也可以这么理解:
string s;
char c;
s.insert(c);
s+=c;
s="动态分配内存的三种方式";
代码块内的三种操作是先有赋值(插入)操作(的意图), 后根据赋值(插入)大小动态调控空间, 最后输入值成功插入(访问)刚分配的空间
而,下面的代码:
#define MAX 100
string s;
char c;
for(int i=0;i<MAX;i++){s[i]=c;
}
是先去访问下标为i的位置的空间, 然后向该空间进行赋值操作, 但因为s未初始化,下标i对应的空间自然没有被分配, 导致赋值操作无法正常进行, 即没有空间去放置输入的元素, 发生溢出
c++运行错误: string subscript out of range相关推荐
- java.lang.StringIndexOutOfBoundsException: String index out of range: 0错误的原因
2019独角兽企业重金招聘Python工程师标准>>> java.lang.StringIndexOutOfBoundsException: String index out of ...
- String index out of range: -4 错误解析
报这个错误是由于对字符串进行操作的过程中抛出了StringIndexOutOfBoundsException异常 下面的几种方法均有可能抛出上述异常: String.substring() Strin ...
- Vector使用报错:Expression:vector subscript out of range
做题的时候遇到一个简单的排序题目: 一共有个学生,每个学生有两门成绩,主课成绩和副课成绩,先按照主课成绩排序,相同的情况下按照副课成绩排序,然后按照排序后的名单输出前名的名单: 这个题目确实很简单,却 ...
- PCL学习——基于B样条曲线的曲面建模程序中报错:Expression:vector subscript out of range
本人在学习PCL中基于B样条曲线的曲面建模时,按照教程中的代码进行实操时程序报错 Expression:vector subscript out of range 经研究排查,出现此问题是由于程序中某 ...
- c语言 java 性能 测试_这个蓝桥杯系统的题,用c语言去评测是满分,改为Java说运行错误是0分,但是我查看输入输出,至少第...
这个蓝桥杯系统的题,用c语言去评测是满分,改为Java说运行错误是0分,但是我查看输入输出,至少第一个是对的啊提交序号1269960作者彭云成提交时间02-0507:49:27评测结果运行错误得分.. ...
- Java语言所有异常类均继承自_Java将运行错误分为两类:(__)和(__), 其对应的类均派生自(__)类;...
[单选题]设 x,y 均为已定义的类名,下列声明对象x1的语句中正确的是( ) [判断题]构造函数的方法名可以由编程人员任意命名. [单选题]能够实现对原文的鉴别和不可否认性的认证技术是( ). [单 ...
- java ccf认证解答_CCF认证 java 中间数 遇到运行错误
用java做中间数这道题,我在我的eclipse上运行了所有例子,结果都可以,但是在系统上测试了好几次,全是运行错误,并且是0分,请各位大神帮忙看看是哪里出了问题,谢谢!要求:问题描... 用java ...
- JDK8版本JAVA运行错误:找不到或无法加载主类 HelloJava的原因及解决方案
JDK8版本JAVA运行错误:找不到或无法加载主类 HelloJava的原因及解决方案 一.错误描述 二.编写HelloJava代码 三.在命令行CMD窗口中运行代码 四.错误原因分析 解决方案 注: ...
- 出现运行时间错误_Excel VBA 运行错误,你知道为何突然出现错误的原因吗
我们知道在写好的某一段程序也许在运行的时候,会出现错误的提示,导致不能正常执行我们的功能.那么你可知道,这些错误的原因是什么吗?这个错误有可能是我们的语法错误,也有可能是运行错误,具体错误需要具体进行 ...
- linux显示fio为非法指令,FORTRAN运行错误消息列表中英对照.doc
FORTRAN运行错误消息列表中英对照 Fortran的运行时错误消息列表 本节列出了英特尔Fortran运行时库(RTL)处理的错误.对于每一个错误,该表提供了错误号,严重性代码,错误信息文本,条件 ...
最新文章
- Linux chmod命令小贴士
- Python学习笔记--程序控制结构
- python人工智能——机器学习——特征工程
- Vue项目目录结构注解附assets与static目录的区别
- 黄聪:【强烈推荐】搜索引擎排名决定一切吗!
- CenterOS防火墙操作
- CF刷刷水题找自信 2
- uCharts 图表
- 最早的支付网关(滴滴支付)和最新的聚合支付设计架构
- dorado7 动态生成图片
- AT89S52单片机C语言编程,单片机的C语言应用程序设计_基于AT89S52单片机的篮球计时计分器.doc...
- 如何解决电脑时间同步出错?
- 戴尔t420服务器重装系统教程,教你联想t420系统重装步骤
- Python3官方手册中文在线版
- 范畴论-一个单子(Monad)说白了不过就是自函子范畴上的一个幺半群而已
- 高德地图两种引入方式
- Matplotlib画图的复杂颜色设置(包括fig, ax, spines, tick)
- npm install WARN package.json not exists: E:\SpringBoot\workplace\D4_pc_ui\.idea\package.json
- 射雕英雄传人物关系python_《射雕英雄传》人物关系图
- Linux下system () 函数详解简介