Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Darioo en 25 Enero 2014, 22:59 pm



Título: Crear archivo de cabecera .h con funcion que retorna string
Publicado por: Darioo en 25 Enero 2014, 22:59 pm
Esta función convierte un string que tenga letras minusculas las pasa a mayusculas Es solo un ejercicio que estoy haciendo.

El código funciona bien,mi duda es si puedo usar esta funcion en un arhivo de cabecera .h y como lo hago, lo he intentando y no ha funcionado.

Con funciones que retornan tipoa primitivos no tuve problema. Como string no es primitivo supongo que es imposible que el preprocesador lo reconozca.

En fin quería saber si existe alguna posible solución.


strMayus.cpp
Código:
//Convierte strings de minusculas a mayusculas
string strMayus(string str){

string str2;
int i = 0;

while (i < str.length())  {

if (96 < str.at(i) < 123) // si el caracter es una letra minúscula

str2 = str.at(i)-32; // pasa el caracter a mayúscula

if (97 > str.at(i) || str.at(i) > 122) str2 = str.at(i); // si no es letra o letra minúscula, mantiene su valor

str.replace(i,1, str2); // reemplaza caracter
i++;
}
 return str;

}

Saludos y gracias por la atención.




Título: Re: Crear archivo de cabecera .h con funcion que retorna string
Publicado por: amchacon en 25 Enero 2014, 23:25 pm
No hay ningún problema con el tipo de retorno.

Ahora bien, si pones el #include antes del "using namespace std" pues entonces te saltará el error porque no estas en el espacio de nombres de la biblio estándar.

Una solución es:
Código
  1. std::string strMayus(std::string str){
  2.  
  3. std::string str2;
  4. int i = 0;
  5.  
  6. while (i < str.length())  {
  7.  
  8. if (96 < str.at(i) < 123) // si el caracter es una letra minúscula
  9.  
  10. str2 = str.at(i)-32; // pasa el caracter a mayúscula
  11.  
  12. if (97 > str.at(i) || str.at(i) > 122) str2 = str.at(i); // si no es letra o letra minúscula, mantiene su valor
  13.  
  14. str.replace(i,1, str2); // reemplaza caracter
  15. i++;
  16. }
  17. return str;
  18.  
  19. }


Título: Re: Crear archivo de cabecera .h con funcion que retorna string [SOLUCIONADO]
Publicado por: Darioo en 26 Enero 2014, 00:28 am

Gracias, agregué los std al archivo de cabecera y funcionó. Tan simple como eso  ;D

Código:
#ifndef UTILS_H_INCLUDED
#define UTILS_H_INCLUDED

std::string strMinus(std::string str);
std::string strMayus(std::string str);

#endif // UTILS_H_INCLUDED