使用getline()函数 输入一个string类的变量出现string subscript out of range
int BookRecord::setrecord () {
string s;
getline(cin,s); if (s[0]>='A'&&s[0]<='Z') {
int i=s.find(';');
book_id=s.substr(0,i);
int j=s.find(';',i+1);
book_title=s.substr(i+1,j-i-1);
i=s.find(';',j+1);
name=s.substr(j+1,i-j-1);
j=s.find(';',i+1);
if (j-1-i!=4||(s[i+1]!=1&&s[i+1]!=2))
return 0;
year_published=s.substr(i+1,j-i-1);
num_of_copies=0;
int n=s.size()-1-j;
for (int k=0;k<n;k++) {
num_of_copies*=10;
num_of_copies+=s[j+1]-'0';
j++;
}
num_of_copiesavailable=num_of_copies;
return 1;
}
else return 0;
}
我写下上面这个函数后在运行时出现错误,提示string subscript out of range !
这是什么原因,找了好久没弄明白,求助~