stack<string> myStack;
string TemStore;
string return_value;
for(int i=0;i<input.length();i++)
if((input.at(i)!='32') && (input.at(i)!= '46'))
TemStore+=input.at(i);
if(input.at(i)=='32') //problem occured here << dont know why it says as the title.
myStack.push(TemStore);
myStack.push('32');
TemStore='\0';
}
我不知道为什么我会收到这样的错误..任何人都可以帮助我吗?
答案 0 :(得分:3)
您需要在for-loop中使用大括号:
for(int i=0;i<input.length();i++) { // brace
if((input.at(i)!='32') && (input.at(i)!= '46'))
TemStore+=input.at(i);
if(input.at(i)=='32')
myStack.push(TemStore);
myStack.push('32');
TemStore='\0';
} // brace
否则,循环将仅适用于此部分:
if((input.at(i)!='32') && (input.at(i)!= '46'))
TemStore+=input.at(i);
此处使用i
:
if(input.at(i)=='32') //problem occured here << dont know why it says as the title.
将超出范围。
此外,看起来您的第二个if语句也需要大括号:
if(input.at(i)=='32') { // brace
myStack.push(TemStore);
myStack.push('32');
TemStore='\0';
} // brace
基本上,只要您想要将for循环,if语句等应用于两个或多个语句,就需要使用大括号。只有当你有一个陈述时才能省略它们:
// Needs braces because there is more than one statement underneath.
if (condition) {
// statement 1
// statement 2
}
// Does not need braces because there is only one statement underneath.
if (condition)
// statement 1