Como usar cin.ignore()

Iniciado por Lotux5, 12 Mayo 2013, 17:45 PM

0 Miembros y 1 Visitante están viendo este tema.

Lotux5

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.

amchacon

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

En char delim pon '\n'


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

Cita de: Lotux5 en 12 Mayo 2013, 17:45 PMcin.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.

Cita de: Lotux5 en 12 Mayo 2013, 17:45 PMPero 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.

Cita de: Lotux5 en 12 Mayo 2013, 17:45 PMSi 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).

Cita de: Lotux5 en 12 Mayo 2013, 17:45 PMdentro 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 (cpp) [Seleccionar]
char linea[1000];

// ...

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 (cpp) [Seleccionar]
#include <iostream>
using std::cin;
using std::cout;
using std::endl;

#include <cctype>
using std::isspace;

int main()
{
   char linea[1000];
   size_t i;
   
   cin.getline(linea, 1000);
   for (i = 0; isspace(linea[i]); i++)
      ;
   if (linea[i] == '\0')
      cout << "Linea en blanco";
   else
      cout << "El primer caracter es " << linea[i];
   cout << endl;
   
   return 0;
}


Una mejor aproximación es utilizar la clase string.

Un saludo
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