为什么该程序没有检测到空格?

时间:2018-11-21 14:38:51

标签: c++ whitespace

所以我再次使用此程序,但遇到了另一个问题。我正在测试字符是否为空格。但是,它没有检测到空间,而是停止了循环,并且不再执行其他任何操作。这是我的代码:

string reet(char reet) {
if (isspace(reet) == true) {
    return "IA";
}
else {
    switch (reet) {
    case 'a':
        return "Zg";
        break;
    case'b':
        return "dA";
        break;
    case 'c':
        return "dG";
        break;
    case 'd':
        return "aw";
        break;
    case 'e':
        return "bw";
        break;
    case 'f':
        return "dQ";
        break;
    case 'g':
        return "cg";
        break;
    case 'h':
        return "ZA";
        break;
    case 'i':
        return "cQ";
        break;
    case 'j':
        return "YQ";
        break;
    case 'k':
        return "eA";
        break;
    case 'l':
        return "dw";
        break;
    case 'm':
        return "cw";
        break;
    case 'n':
        return "ag";
        break;
    case 'o':
        return "eQ";
        break;
    case 'p':
        return "bA";
        break;
    case 'q':
        return "aA";
        break;
    case 'r':
        return "ZQ";
        break;
    case 's':
        return "cA";
        break;
    case 't':
        return "Yw";
        break;
    case 'u':
        return "eg";
        break;
    case 'v':
        return "bg";
        break;
    case 'w':
        return "aq";
        break;
    case 'x':
        return "bQ";
        break;
    case 'y':
        return "Yg";
        break;
    case 'z':
        return "Zw";
        break;
    default:
        return " ";
        break;
    }
}
}

string enc(string input) {
string sketchyBois = input;
string bigBoi = "";
int yeetL = sketchyBois.length() + 1;
for (int x = 0; x < yeetL;) {
    bigBoi = bigBoi + reet(sketchyBois[x]);
    x++;
}
return bigBoi;
}

我只是想知道是否有人可以告诉我为什么这样做呢?谢谢!

1 个答案:

答案 0 :(得分:7)

您需要更改

if (isspace(reet) == true)

if (isspace(reet)) 

if (isspace(reet) != 0) 

因为isspace only returns a non-zero int value for a white space character,而不是bool

(请注意,就编码风格而言,通常优选在布尔测试中省略与truefalse的比较,而只使用if (expr)if (!expr)。)