Почему эта программа не обнаруживает пробелы? - PullRequest
0 голосов
/ 21 ноября 2018

Итак, я снова работал над этой программой и столкнулся с другой проблемой.Я проверяю, является ли символ пробелом.Однако вместо того, чтобы обнаружить, что есть пробел, он останавливает цикл и больше ничего не делает.Вот мой код:

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 голосов
/ 21 ноября 2018

Вам необходимо изменить

if (isspace(reet) == true)

на

if (isspace(reet)) 

или

if (isspace(reet) != 0) 

, поскольку isspace возвращает только ненулевое значение int значение для символа пробела , а не bool.

(Обратите внимание, что в качестве стиля кодирования обычно предпочитают опускать сравнение с true или false в логическом значениитесты и просто используйте if (expr) или if (!expr).)

...