string temp es igual a "ZERO: \ t.WORD \ t1" de mi depurador. (La primera línea de mi archivo)isalpha (<mychar>) == true se evalúa como falso?
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;
Este es mi código para comprobar si el primer carácter de la temperatura es un a-z, A-Z. La primera instrucción if se evaluará como verdadera y la 2da como falsa. ¡¿¡¿¡¿POR QUÉ?!?!?! He intentado esto incluso sin la "temp.length()> 0 & &" y todavía evalúa falso. Simplemente odia el "== verdadero". Lo único que puedo pensar es que isalpha() devuelve! = 0 y verdadero == 1. Entonces, podrías obtener isalpha() == 2! = 1. Pero, no tengo idea si C++ es eso ... extraño.
Por cierto, no necesito saber que el "== verdadero" es lógicamente inútil. Lo sé.
producción fue
without true worked
bloque de código compilado con el uso de GNU GCC en Ubuntu 9.10 (si esto importa lo hay)
has necesitado 'tribunal << isalpha (temp [0]) << endl;'? –
"No tengo idea si C++ es así de ... raro". Consultar un manual de referencia le daría una idea. cplusplus.com dice: "Un valor diferente de cero (es decir, 'verdadero') si de hecho * c * es una letra alfabética". Por eso no debe usar cplusplus.com: 'true' en C++ no significa lo mismo que" verdadero "en la descripción en el estándar C de donde copiaron. opengroup.org dice: "La función isalpha() devolverá un valor distinto de cero si c es un carácter alfabético", que es bastante mejor. –
Además, tenga cuidado con la confusión entre esta función isalpha de '' o '', y la plantilla de función 'std :: isalpha' en' '. Este último devuelve 'bool', por lo que si llamaras a eso entonces tu código funcionaría. –