isspace () работает только для цифр до 8?

В моем коде:

cout << "Isspace 5 and 10 are " << isspace(5) << " and " << isspace(10) << endl;

дает 0 и 8. Почему isspace (10) не дает 0, так как 10 не является пробелом?

1

Решение

Вы должны передать символы isspace, а не целые числа.

isspace('5') == zero (false)
isspace(' ') == non-zero (true)

Когда вы проходите 5 а также 10 Вы спрашиваете, если символы со значениями ASCII 5 (ENQ, некоторые редко используемые контрольный код) и 10 (LF, перевод строки, AKA '\n') являются пробелами. ENQ не является пробелом, поэтому isspace возвращает ноль. Перевод строки — это пробел, поэтому isspace возвращает ненулевое значение.

1

Другие решения

Потому что, согласно issspace (), 10 (0xa) — это пробельные символы (перевод строки / перевод строки). Увидеть http://www.cplusplus.com/reference/cctype/isspace/

2

Числа, которые вы передаете, обрабатываются как числовое представление символов ASCII. 10 — символ новой строки, который рассматривается системой как символ пробела.

1
По вопросам рекламы [email protected]