菜鸟求助,std::out of range

sinat_41938770 2018-04-01 07:31:39
class Borrower
{
public:string borrowerid, borrowerfirstname, currentnum, borrowerlastname;

string book[5] = { "0" };
Borrower()
{
borrowerid = "abcde", borrowerfirstname = "baaaaaaas", borrowerlastname = "namenamename", currentnum = "0";
for (int i = 0; i < 5; i++)
{
book[i] = "a";
}
};

~Borrower() {};




};
istream &operator>>(istream &is, Borrower &a)
{
string z;
int m = 0, back = 5, counter=5;
is >> z;
for (int i = 0; i < 5; i++)
{
if (48 <= z[i] && z[i] <= 57)m++;

}
if (m != 5)
{
cout << "error"; exit(0);
}
for (int i = 0; i < 5; i++)
{
a.borrowerid[i] = z[i];
}

for (counter = 5; counter < z.length(); counter++)
{
if (z[counter] == ' ')
break;
}
a.borrowerfirstname = z.substr(back + 1, counter- back - 1);
back = counter;

for (counter = back+1; counter < z.length(); counter++)
{

if (z[counter] == ';')break;
}
a.borrowerlastname = z.substr(back + 1, counter - back - 1);
back = counter;





return is;
}
int main()
{
Borrower A;
cin >> A;
cout << A;

system("pause");

}
...全文
685 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wallesyoyo 2018-04-02
  • 打赏
  • 举报
回复

is >> z;
for (int i = 0; i < 5; i++)
{
if (48 <= z[i] && z[i] <= 57)m++;
}
这个地方你输入了字符串z,但是假如你输入的字符串长度小于5,不就会得到你说的越界错误了吗。。
sinat_41938770 2018-04-01
  • 打赏
  • 举报
回复
其中输入运算符的重载还没完全写好 但是测试的时候已经出现了std::out of range 的错误 实在不懂哪里错了

64,654

社区成员

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

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