请问这段程序哪里发生错误?为什么会通不过第6行?我自己测试都没发现问题
#include <iostream>
#include <cstdlib>
#include <cctype>
using namespace std;
int main()
{
string str;
unsigned int i,j,sp;
long int stack[65535];
while(getline(cin,str)){
sp=0;
for(i=0;i<str.length();i++){
if(str.c_str()[i]=='+') {
stack[sp-2]=stack[sp-1]+stack[sp-2];
sp--;
}else if(str.c_str()[i]=='-'){
stack[sp-2]=stack[sp-2]-stack[sp-1];
sp--;
}else if(str.c_str()[i]=='*'){
stack[sp-2]=stack[sp-2]*stack[sp-1];
sp--;
}else if(str.c_str()[i]=='/'){
stack[sp-2]=stack[sp-2]/stack[sp-1];
sp--;
}else if(isdigit(str.c_str()[i])){
stack[sp++] = atoi(str.substr(i,str.length()-1).c_str());
for(j=i;j<str.length();j++){
if(str.c_str()[j]<'0' || str.c_str()[j]>'9'){
break;
}
}
i=j-1;
}
}
cout<<stack[0]<<endl;
}
return 0;
}