CPP功能无法正确输出

XIA*_*ODI 0 c++ c++11

string readString(string p)
{
    string s;

    cout << p;
    cin >> s;
    return s;
}

int main()
{
    string oper = readString("? ");
    while (oper != "Q")
    {
        if (oper == "l")
            cout << "load complete" << endl;
        else if (oper == "+")
            cout << "add complete" << endl;
        string oper = readString("? ");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我输入时l,输出是load complete.但后来我输入+,它仍然输出load complete.为什么不输出add complete

http://ideone.com/JCDdXk

Tar*_*ama 6

您正在声明两个名为变量的变量oper.

int main()
{
    string oper = readString("? "); //HERE
    while (oper != "Q")
    {   
        string oper = readString("? "); //HERE
    }
}
Run Code Online (Sandbox Code Playgroud)

标记的第二行在HERE当前范围内声明一个新变量,而不是更新包含范围中的现有变量.将其更改为:

oper = readString("? ");
Run Code Online (Sandbox Code Playgroud)