F_All 0 Denunciar post Postado Fevereiro 11, 2013 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"); } Compartilhar este post Link para o post Compartilhar em outros sites
GBecker 51 Denunciar post Postado Fevereiro 11, 2013 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! Compartilhar este post Link para o post Compartilhar em outros sites
F_All 0 Denunciar post Postado Fevereiro 13, 2013 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! Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Fevereiro 14, 2013 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 Compartilhar este post Link para o post Compartilhar em outros sites
ScreenBlack 13 Denunciar post Postado Fevereiro 26, 2013 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". Compartilhar este post Link para o post Compartilhar em outros sites