错误名称查找" i"改为iso' for'作用域

时间:2014-10-22 20:20:32

标签: c++

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';     
    }     

我不知道为什么我会收到这样的错误..任何人都可以帮助我吗?

1 个答案:

答案 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