Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ivancea96

#2161
Código (cpp) [Seleccionar]
aux +=s[i+1];

Eso puede acceder a s[ s.length() ].

En cualquier caso, string::find() será más interesante que usar tal cadena de if().

Además, trata de hacer comparaciones y asignaciones con caracteres y no con strings. Tal vez simplemente tengas una extraña codificación.
#2162
(operand types are 'std::string {aka std::basic_string<char>}' and 'int')

Estás comparando una string con un caracter. No puedes hacer eso. O haces s[0], o haces "á".
#2163
¿Qué compilador utilizas? ¿Qué codificación tiene el fichero .cpp?
#2164
El error en la instrucción de antes. El error da más información.

A todo esto, pusiste

Código (cpp) [Seleccionar]
cadena == 'á'

¿cadena es un char? ¿No será un char*?
#2165
Cita de: user-marcos en 10 Julio 2015, 00:22 AM

if( cadena == 'á')

no se puede, y ami me sale que las vocales con acento valen dos char

Pasa el error que te lanza, para saber todos los datos.
#2166
Código (cpp) [Seleccionar]
void quitarAcentos(std::string &str){
   static const std::string t = "aáàâäeéèêëiíìîïoóòôöuúùûüAÁÀÄEÉÈÊËIÍÌÎÏOÓÒÔÖUÚÙÛÜnññññNÑÑÑÑ";
   static const unsigned char n = 5; // Numero de acentos diferentes (+ base) por vocal
   for(int i=0; i<str.size(); i++){
       size_t pos = t.find(str[i]);
       if(pos!=std::string::npos){
           str[i] = t[(pos/n)*n];
       }
   }
}


EDITO: La A mayúscula con acento circulflejo (^) no se ve. Acuerdate de añadirla si usas este código.
#2167
El archivo de cabecera es pura información sobre la clase y sus métodos y campos. Esa es la teoría de cómo debería ser. Obviamente luego puedes hacer con ella lo que quieras.

clase.h
clase.cpp
main.cpp


clase.cpp se compila. Incluye clase.h para saber las clases y métodos -> clase.o, con sus funciones y clases
main.cpp se compila, e incluye clase.h para saber las clases y métodos, que son las que usarás -> main.o
main.o + clase.o -> final.exe

Si hicieras: main.o -> final.exe, las funciones que usa que coge de clase.h no se encontrarían, y saltarían errores del linker.


Una vez visto eso:

clase.h (como lo tienes tú, con las funciones desarrolladas)
main.cpp

main.cpp se compila. Incluye chase.h. Al incluirla, todo lo que tiene dentro se compila junto a main.cpp -> main.exe


El problema de esto es que puede haber problemas si incluyes la cabecera multiples veces, en multiples archivos. Para hacer algo puntual, es factible, pero para hacer un proyecto importante, no.
#2168
No, no es el mejor método. Ahora ese esa clase será compilada en cada archivo que la incluya.
#2169
Los punteros no son algo malo :/
Son algo necesario y muy útil, que seguirás usando.

Con new además, llamas al constructor de la clase o estructura:

Código (cpp) [Seleccionar]
Clase obj = new Clase(1,2,"a");
#2170
No dije que nullptr sea malo. Dije que estabas poniendo un IP** sin razón aparente xD

La forma de evitar static, es, o copiando la estructura, o pasándo un puntero sacado con new. E insisto, deberías usar new en C++, especialmente si trabajas con clases o estructuras.