输入似乎是正确的字符串,但是没有被接受

时间:2014-01-06 22:45:49

标签: c++ string char

所以我试图做一个愚蠢的小控制台响应的事情,因为我很无聊,但由于某种原因,当你试图删除某些东西时,它不会接受它作为正确答案。字符串看起来很好,但是当我尝试使用if(a==b)或类似字符检查它时,它将不会有任何字符串。这是代码:

string entry(){
    string input = "";
    char ch = getch();
    while (ch != '\r'){
        if (ch != '.'){
            ch = tolower(ch);
            input += ch;
            cout<<ch;
            ch = getch();
        }
        else if (ch == '.'){
            cout<<ch;
            ch=getch();
        }
        else if (ch == '\b'){
            cout<<'\b';
            input.resize((input.length()-1));
        }
    }
    cout << "\n"+input;
    return input;
}

这可以用于a=entry();之类的内容,但正如我已经说过的那样,它不适用于任何if语句。

2 个答案:

答案 0 :(得分:0)

你有两个条件覆盖整个范围,然后是另一个条件 - 这是永远不会采取的:

if (ch != '.') {
   // something
else if (ch == '.') {
   // something else
} 

如果ch不是..涵盖所有选项。它相当于

if (ch != '.') {
   // something
else {
   // something else
}     

您需要从第1个if中排除\b个字符。

答案 1 :(得分:0)

ch == '\b'永远无法到达,因为第一个if(ch != '.')也匹配该情况。也许还原顺序:

    if (ch == '.'){
        cout<<ch;
        ch=getch();
    }
    else if (ch == '\b'){
        cout<<'\b';
        input.resize((input.length()-1));
    }
    else{
        ch = tolower(ch);
        input += ch;
        cout<<ch;
        ch = getch();
    }