В моем коде:
cout << "Isspace 5 and 10 are " << isspace(5) << " and " << isspace(10) << endl;
дает 0 и 8. Почему isspace (10) не дает 0, так как 10 не является пробелом?
Вы должны передать символы isspace
, а не целые числа.
isspace('5') == zero (false)
isspace(' ') == non-zero (true)
Когда вы проходите 5
а также 10
Вы спрашиваете, если символы со значениями ASCII 5 (ENQ, некоторые редко используемые контрольный код) и 10 (LF, перевод строки, AKA '\n'
) являются пробелами. ENQ не является пробелом, поэтому isspace
возвращает ноль. Перевод строки — это пробел, поэтому isspace
возвращает ненулевое значение.
Потому что, согласно issspace (), 10 (0xa) — это пробельные символы (перевод строки / перевод строки). Увидеть http://www.cplusplus.com/reference/cctype/isspace/
Числа, которые вы передаете, обрабатываются как числовое представление символов ASCII. 10 — символ новой строки, который рассматривается системой как символ пробела.