首页 > 解决方案 > 为什么这个程序没有检测到有空格?

问题描述

所以我又在做这个程序,我遇到了另一个问题。我正在测试一个字符是否是一个空格。但是,它不会检测到有空格,而是停止循环并且不再做任何事情。这是我的代码:

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

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

标签: c++whitespace

解决方案


你需要改变

if (isspace(reet) == true)

if (isspace(reet)) 

或者

if (isspace(reet) != 0) 

因为只为空白字符isspace返回非零int值,而不是 a bool

(请注意,作为编码风格的问题,通常最好在布尔测试中省略与trueor的比较,而只使用or 。)falseif (expr)if (!expr)


推荐阅读