Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Por que não é necessário incluir o header <ctype.h> no código abaixo para que funcione ?
# include <string>
# include <iostream>
using namespace std;
void main (void)
{
string a;
cout << "digite uma string!" << endl;
getline(cin,a);
cout << a[0] << endl; //exibe a primeira letra da string
if (isalpha(a[0])) //verifica a primeira letra da string. Por que não é necessário <ctype.h> ?
cout << "true alpha" << endl;
else if (isdigit(a[0])) //verifica a primeira letra da string. Por que não é necessário <ctype.h> ?
cout << "true digit" << endl;
else
cout << "false alpha and digit" << endl;
system ("pause");
}>
Investiguei aqui o porque. Mas também não encontrei o motivo.
Sei que, em C++. O header locale, tem um template desta função. Talvez, ao incluir o iostream inclua o locale automatico. Mas, não tenho certeza.
Se alguém mais experiente poder explicar, fico grato. Pois também fiquei curioso...
Especificação isalpha:
http://www.cplusplus.com/reference/cctype/isalpha/?kw=isalpha
Espero ter ajudado, FLW!
Pesquisando aqui, vi que o <iostream> inclui o <istream> que por sua vez inclui o <ostream> que inclui o <ios> e por ai vai, procurei um pouco mais a fundo mas não encontrei a inclusão do <ctype> nem do <locale>. No entanto, reparei que é possível utilizar outras funções de outros headers, como a sqrt() do <math.h>.
Valeu pela força!
Provavelmente a implementação do seu compilador está incluindo os headers <cmath> e <cctype> (ou <math.h> e <ctype.h>, respectivamente) ou no header <string> ou no header <iostream>.
Mas, para garantir compatibilidade entre compiladores, você deve incluir os headers necessitados explicitamente.
Abraços :D
Realmente a função já está inclusa.
No MinGW, ela está na biblioteca "string->localefwd.h", "iostream->ostream->ios->localefwd.h" e "iostream->istream->ios->localefwd.h".
Investiguei aqui o porque. Mas também não encontrei o motivo.
Sei que, em C++. O header locale, tem um template desta função. Talvez, ao incluir o iostream inclua o locale automatico. Mas, não tenho certeza.
Se alguém mais experiente poder explicar, fico grato. Pois também fiquei curioso...
Especificação isalpha:
http://www.cplusplus.com/reference/cctype/isalpha/?kw=isalpha
Espero ter ajudado, FLW!