Navegación

    UniversoJuegos
    • Registrarse
    • Conectarse
    • Buscar
    • Recientes
    • Etiquetas
    • Popular
    • Usuarios
    • Grupos
    • Buscar
    1. Inicio
    2. Hawkings
    3. Mensajes

    Hawkings (@Hawkings)

    185
    Reputación
    2208
    Mensajes
    1261
    Visitas
    0
    Seguidores
    0
    Siguiendo
    • Perfil
    • Siguiendo
    • Seguidores
    • Temas
    • Mensajes
    • Mejor valorados
    • Grupos

    Information about Hawkings

    Registrado
    Última vez conectado

    Publicados por Hawkings

    • ★ Curso de C++ ★

      Post #4

      Strings en C++

      Bueno, creo que esto urgía más por lo del concurso, que seguir con las clases, así que voy a explicar ahora cómo se trabaja con strings en C++. Antes de nada como siempre os recuerdo que podéis trabajar con las strings de C incluyendo la librería . Sin embargo las strings en C++ son mucho más cómodas de usar porque no son arrays de caracteres, sino que son objetos, que facilita mucho las cosas. En C++ existe una clase llamada string, que está en la librería . Si creamos objetos de esa clase tendremos cadenas de caracteres donde guardar palabras, textos o lo que queramos. vamos a ver un ejemplo, donde creamos una cadena, guardamos en ella una frase y la mostramos con cout:

      #include  //para usar cin y cout
      #include  //para usar la clase string de C++, no confundir con 
      using namespace std;
      
      int main() {
          string frase; //también podíamos haber puesto directamente string frase = "Hola mundo!";
          frase = "Hola mundo!";
          cout << frase << endl; //mostramos Hola mundo! y un salto de línea
      }
      

      Además, las strings de C++ tienen algunas propiedades que no tenían los arrays de caracteres en 😄

      • Podemos copiar el contenido de una string A a otra string B sin necesidad de usar strcpy(), simplemente poniendo esto: "B = A;".
      • Podemos comparar el contenido de dos cadenas, A y B sin necesidad de usar strcmp(), simplemente poniendo "A == B" dentro de un bucle, un if o lo que queramos.
      • Si queremos concatenar dos cadenas (añadir una al final de la otra) podemos hacerlo sin necesidad de usar strcat(), simplemente usando += como haríamos con un entero. Por ejemplo supongamos que queremos añadir el contenido de una string A a otra string B, pues se haría así: "B += A;". Sirve también con caracteres sueltos entre comillas simples ('a','x','B') o con cadenas entre comillas dobles("hola","Hawkings","C++"). Es decir, que podemos hacer A += "ABC"; y ABC se añadirá al final de A, sin dejar ningún espacio por enmedio.
      • Podemos conocer la longitud de una cadena A sin necesidad de usar strlen(), simplemente llamando a su función length() (vale, esto es casi lo mismo, pero no intentéis usar strlen() con una string de C++). Si lo preferimos también podemos usar size(). Ambas hacen lo mismo. Por ejemplo para crear un entero num cuyo valor sea la longitud de A simplemente ponemos "int num = A.length()" o bien "int num = A.size()". Yo suelo usar length(), porque es como se llama el método en java, pero size() hace exactamente lo mismo.
      • Podemos leer una línea entera de la entrada (cin) o de cualqueir sitio sin miedo a salirnos del array, porque esto no es un array. Para ello en vez de gets usaremos getline(), que está en la librería string. Más adelante explico su uso.
      • Si queremos leer de cin con >> una cadena podemos, pero parará de leer en cuanto se encuentre un espacio en blanco a no ser que configuremos cin de otra manera (que aún no sabemos).
      • Podemos mostrar una cadena tranquilamente con "cout <
        Otra cosa importante es que podemos acceder al carácter que esté en la posición N de la cadena con corchetes como si fuera un array, por ejemplo, si A = "¡ola!", después de hacer "A[0] = 'H';" A valdría "Hola!".

      Ahora vamos a aprender a usar getline(). Es una función que recibe dos argumentos, el primero, de dónde va a leer la cadena (normalmente de cin) y el segundo es en qué cadena los va a guardar. Y ya está. Vamos a ver un ejemplo grande con strings en C++:

      #include  //para usar cin y cout
      #include  //para usar la clase string de C++, no confundir con 
      using namespace std;
      
      int main() {
          string cad1, cad2;
          cad1 = "abc";
          cad2 = cad1; //ahora tanto cad1 como cad2 valen "abc"
          cad2 = "Abc"; //ahora cad2 vale "Abc" pero cad1 sigue valiendo "abc"
          if(cad1 != cad2) { //si cad1 es diferente de cad2...
              cout << cad1 << " es diferente de " << cad2 << endl; //esto muestra:
              //abc es diferente de Abc
          }
          cad1 = "Abc";
          if(cad1 == cad2) { //si cad1 es igual a cad2
              //ahora sí entrarán aquí porque ambas valen Abc
              cout << cad1 << " es igual a " << cad2 << endl;
          }
          cad1 += cad2; //ahora cad1 vale "AbcAbc"
          /*
          Ahora vamos a leer datos de la entrada estándar (cin)
          */
          cin >> cad1; //si el usuario introduce "hola que tal?" solo se guardará "hola" (hasta
          //el primer espacio en blanco)
          getline(cin, cad2); //sin embargo aquí se guardaría "hola que tal?" todo entero
          //mi recomendacion es leer las cadenas siempre con getline. Y tened cuidado si antes habíais leido con cin >>
          //porque os puede dar problemas con getline. Ambos no se llevan bien, pero para arrelgarlo solo tenees que poner
          //el getline dos veces seguidas.
          /*
          Ahora vamos a mostrar cad2 letra por letra, para ver cómo se opera con caracteres
          sueltos de una cadena
          */
          for(int i = 0; i < cad2.length(); i++) {//esta línea nos dará un warning, si queremos evitar que
              //salga el warning solo tenemos que poner esto en lugar de la linea anterior
              // for(unsigned int i = 0; i < cad2.length(); i++) {
              //y a está. Sin embargo a pesar del warning no debería haber ningún problema en ponerlo así
      
              cout << cad2[i]; //mostramos carácter a carácter la cadena
          }
          return 0;
      }
      
      Creo que no me dejo nada importante excepto los iteradores, que ya los veremos más adelante. Ahora procedo a postear el concurso propuesto por Lunnaris, creo que con eso ya tenéis suficiente para practicar xD.[/i]
      publicado en Aplicaciones de escritorio
    • El penúltimo en postear es Justin Bieber!!

      _xD_

      publicado en Spam
    • Me largo a Barcelona... Y después a la playa ^^

      Ya fui una vez y me encantó :in-love: Comí en el Hard Rock Café y luego estuve toda la tarde por la ramba, fue en un viaje de estudios, el año pasado creo xD.

      PD: mierda, me voy mañana y aún no he pensado el concurso de informática xD

      publicado en Despedidas
    • Proyecto ApiTool VB

      Yo estoy dispuesto a ayudarte, no sé cómo no me lo has dicho antes xD de todas formas si quieres que lo hagamos date prisa porque me voy mañana.

      publicado en Metin2
    • Recopilación de Problem´s

      ¿Problem, botón de editar?

      publicado en Spam
    • Rkodestructor fuera del team y baneado

      Bueno, ya me parecía a mi bastante raro que un ex-miembro del team se largara sin decir nada, esto es otra cosa. Bueno, me parece bien que te vayas si no te gusta este foro, pero no entiendo muy bien a qué te refieres cuando dices:

      Si quereis que esto no acabe como DMX ha que tomar acciones desde ya, empezando por los miembros del team.
      

      Bueno, puede que como soy nuevo en el team no sé de qué va esto, pero yo no veo malos rollos entre los miembros del team. ¿Crees que los moderadores nuevos están mal elegidos? Puede que esto no vaya conmigo (porque creo que nunca he hablado contigo xD) pero me gustaría saber cuáles son en tu opinión los fallos del team, para no caer en los mismos errores. Yo creo que nunca le he negado mi ayuda a alguien a quien pudiera dársela, y creo que tampoco me he comportado de manera altanera y soberbia con los users desde que soy moderador, si es eso a lo que te refieres. Y en cuanto a los otros moderadores, no sé que dirán por MP, pero exceptuando un post concreto de LINQUIERON creo que públicamente lo han hecho bien.

      Un saludo.

      publicado en Anuncios y Noticias
    • El penúltimo en postear es Justin Bieber!!

      Hoy Uchiha Madara se ha puesto a cantar canciones de Justiniano Gayber en mi casa y no es coña U.U

      publicado en Spam
    • Rkodestructor fuera del team y baneado

      No entiendo muy bien por qué quiere ser baneado urgentemente y sin despedirse. Si no se quiere meter, pues bueno, pero para eso no hace falta ser baneado, si se va yo creo que lo mínimo que debería hacer es dar la cara, y no largarse por las buenas dejando que Anghios se coma el marrón. En fin, yo no le conocía, y no me gustaría juzgar a una persona por una sola acción, pero parece que no voy a tener muchas más oportunidades. Aún así, me parece que podía haber hecho cosas mucho peores. Dentro de lo que cabe es una decisión relativamente madura.

      publicado en Anuncios y Noticias
    • Gran Evento

      Yo me ofrezco a proponer un problema para informática. Y el lenguaje es lo de menos, se podrá resolver con todos los lenguajes de programación (Java, C, C++, VB, JavaScript, PHP, Python o cualquiera).

      publicado en Ideas
    • Me largo a Barcelona... Y después a la playa ^^

      @Anghios said:

      Suerte perrilla, el año que viene me apunto contigo :icon_lol: y que pases buen veranico! :in-love:

      Te puedes apuntar al regional, pero para ir a barcelona tienes que clasificarte :icon_twisted:

      De todas formas ya te aviso que no te dejarán competir programando en VBasura xDDD

      PD: graciias a todoss!! :wiii:

      publicado en Despedidas
    • 1
    • 2
    • 66
    • 67
    • 68
    • 69
    • 70
    • 207
    • 208
    • 68 / 208