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:
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:
#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