elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como usar cin.ignore()
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como usar cin.ignore()  (Leído 8,075 veces)
Lotux5

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Como usar cin.ignore()
« en: 12 Mayo 2013, 17:45 pm »

Alguien me explica como usar cin.ignore(). Ya se que consta de 2 parametros. por ejemplo:

cin.ignore(1000,'\n') ---> Esto hace que ignore todos los caracteres hasta que encuentra un salto de linea.

Pero lo que quiero que me expliquen (si es posible) es como usarlo para que ignore una serie de caracteres determinados. Por ejemplo:

Si creo una cadena con cin.getline(c,1000,EOF) dentro e esa cadena como hago para "ignorar" linea que empieze por '#', osea, una serie de de caracteres que empiece con el caracter '#' y acabe con '\n'.

Gracias.


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Como usar cin.ignore()
« Respuesta #1 en: 12 Mayo 2013, 18:33 pm »

Lee el primer caracter de cada línea, si encuentra un # usa getline para "comerte la linea":
Código
  1. cin.getline (char* s, streamsize n, char delim );

En char delim pon '\n'




En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Como usar cin.ignore()
« Respuesta #2 en: 12 Mayo 2013, 18:46 pm »

cin.ignore(1000,'\n') ---> Esto hace que ignore todos los caracteres hasta que encuentra un salto de linea.
No exactamente. Con esa llamada se descarta un máximo de mil caracteres, pueden ser menos si se encuentra el carácter '\n' o se alcanza el final del archivo. Y si la linea contiene mas de mil caracteres no se descarta la linea completa.

Pero lo que quiero que me expliquen (si es posible) es como usarlo para que ignore una serie de caracteres determinados.
No es posible ya que no se conoce de antemano el contenido de la linea.

Si creo una cadena con cin.getline(c,1000,EOF)
Un problema es, con esa llamada a función, lees un máximo de mil caracteres sin importar de cuantas lineas se traten (pueden ser varias).

dentro e esa cadena como hago para "ignorar" linea que empieze por '#', osea, una serie de de caracteres que empiece con el caracter '#' y acabe con '\n'.
Tienes que leer una linea, por ejemplo con getline:
Código
  1. char linea[1000];
  2.  
  3. // ...
  4.  
  5. cin.getline(linea, 1000); // El delimitador es '\n'

A continuación buscas el primer carácter que no sea espacio blanco y procedes según sea el caso.

Un programa de ejemplo:
Código
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4. using std::endl;
  5.  
  6. #include <cctype>
  7. using std::isspace;
  8.  
  9. int main()
  10. {
  11.   char linea[1000];
  12.   size_t i;
  13.  
  14.   cin.getline(linea, 1000);
  15.   for (i = 0; isspace(linea[i]); i++)
  16.      ;
  17.   if (linea[i] == '\0')
  18.      cout << "Linea en blanco";
  19.   else
  20.      cout << "El primer caracter es " << linea[i];
  21.   cout << endl;
  22.  
  23.   return 0;
  24. }

Una mejor aproximación es utilizar la clase string.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines