строка temp равна «ZERO: \ t.WORD \ t1» из моего отладчика. (Первая строка моего файла)isalpha (<mychar>) == true оценивает значение false?
string temp = RemoveWhiteSpace(data);
int i = 0;
if (temp.length() > 0 && isalpha(temp[0]))
cout << "without true worked" << endl;
if (temp.length() > 0 && isalpha(temp[0]) == true)
cout << "with true worked" << endl;
Это мой код, чтобы проверить, если первый символ температуры является а-г, A-Z. Первый оператор if будет оценивать true, а второй - false. ЗАЧЕМ?!?!?! Я пробовал это даже без «temp.length()> 0 & &», и он по-прежнему оценивает значение false. Он просто ненавидит «== true». Единственное, что я могу придумать, это isalpha() возвращает! = 0 и true == 1. Тогда вы можете получить isalpha() == 2! = 1. Но я понятия не имею, является ли C++ тем ... странно.
BTW, мне не нужно знать, что «== true» логически бессмысленно. Я знаю.
выход был
without true worked
Собран с кодоблок использованием GNU GCC на Ubuntu 9.10 (если это имеет значение любой)
Вы пробовали 'COUT << IsAlpha (Темп [0]) << ENDL;'? –
«Я понятия не имею, что C++ - это ... странно». Консультирование справочного руководства даст вам представление. cplusplus.com говорит: «Значение, отличное от нуля (т. е.« истина »), если действительно * c * является буквенной буквой». Вот почему вы не должны использовать cplusplus.com: 'true' в C++ не означает то же самое, что и« true »в описании в стандарте C, из которого они скопировали. opengroup.org говорит: «Функция isalpha() должна возвращать ненулевое значение, если c - алфавитный символ», что довольно хорошо. –
Кроме того, остерегайтесь путаницы между этой функцией isalpha от '' или '' и шаблоном функции 'std :: isalpha' в' '. Последний возвращает 'bool', поэтому, если вы звонили, тогда ваш код будет работать. –