Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Ja_90 en 11 Octubre 2014, 01:16 am



Título: Pregunta libreria <ctype.h>
Publicado por: Ja_90 en 11 Octubre 2014, 01:16 am
Buenas, tengo una pregunta sobre la libreria <ctype.h>
Esta libreria es estandar de C, ahora bien programando en C++.
 
quiero que ingresada una cadena de caracteres me cuente cuantos son mayusculas o minusculas o digitos o del alfabeto....en fin se como se hace pero la pregunta es que cuando lo hago no necesito usar la libreria <ctype.h>....por ejemplo:


Código
  1. /*Escribir un programa que cuente las mayusculas de una cadena de caracteres*/
  2.  
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.    string word;
  9.  
  10.    cout<<"Enter the word: ";
  11.    cin>>word;
  12.  
  13.    int cont = 0;
  14.  
  15.    for(int i=0 ; i<word.length(); i++)
  16.    {
  17.       if(isupper(word[i])) // Si quiero ver las minusculas es con islower(word[i])
  18.       {
  19.           cont++;
  20.       }
  21.    }
  22.    cout<<"\nThe word has: "<<cont<<"capital letters"endl;
  23.  
  24.    cin.get();cin.get();
  25.    return 0;
  26. }
  27.  
  28.  

El programa me compila y funciona perfecto....Entonces en c++ no necesito declarar esta libreria??...o en que casos debo declararla??

GRACIAS de antemano. Espero que alguien me pueda aclarar esto, para no estar usando librerias sin ser necesarias.  ;D ;D


Título: Re: Pregunta libreria <ctype.h>
Publicado por: rir3760 en 11 Octubre 2014, 02:55 am
En C++ (según el estándar C++98) cuando utilizas una función parte de la biblioteca estándar de C debes incluir el encabezado correspondiente (en tu caso <cctype>), si no lo haces el programa es "ill formed", en buen cristiano no hay garantías sobre su comportamiento (cualquier cosa puede pasar desde obtener los resultados esperados hasta el legendario BSOD).

Un saludo


Título: Re: Pregunta libreria <ctype.h>
Publicado por: Ja_90 en 11 Octubre 2014, 21:27 pm
Gracias por la aclaracion rir3760