PROBLEMA CON getline

Iniciado por Realser86, 24 Octubre 2017, 23:06 PM

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

Realser86

Buenas Tardes

Estoy usando un codigo para leer una linea especifica de un archivo.txt, el problema es que cuando intento leer una linea el contador empieza a contar desde la segunda linea del archivo,
ejemplo

este es mi archivo de texto

cada linea esta definida con las siguientes variables

archivo>>dia>>nombre_comp>>nombre_pro>>cant_com;

1 diego mouse 3
2 raul teclado 1
2 pedro teclado 2
2 luis USB3 2
5 juan USB3 10
7 lucho mouse 7

cuando le digo al codigo que me lea e imprima el nombre_comp de la linea 0 me imprime raul y no diego como debería ser  , y asi sucesivamente tomando como linea 0 la segunda linea de mi archivo

adjunto el código como ejemplo cuando le pido que me imprima el nombre_comp de la linea 1

if (archivo.is_open())
{
     string linea;
    int contador=0;

    while(getline(archivo,linea))
    {
       archivo>>dia>>nombre_comp>>nombre_pro>>cant_com;

       if(1==contador)
       {
          
          cout<<nombre_comp<<endl;
       }
       contador++;
    }
        archivo.close();   
}   
      
   
}

con este codigo le pido que me imprma en este caso la linea 1 que seria raul pero me imprime pedro, es decir nunca me toma en cuenta la primer linea del archivo que es diego, que debería ser linea 0, si no que empieza a contar la linea 0 desde raul.

1 diego mouse 3
2 raul teclado 1
2 pedro teclado 2
2 luis USB3 2
5 juan USB3 10
7 lucho mouse 7




Gallu

No crees que el problema podria estar en

Código (cpp) [Seleccionar]

  if(1==contador)
       {
         
          cout<<nombre_comp<<endl;
       }
       contador++;


prueba a cambiarlo a

Código (cpp) [Seleccionar]

  if(0==contador)
       {
         
          cout<<nombre_comp<<endl;
       }
       contador++;
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.

Realser86

igua si lo tomo como (0==contador), no me lee la primer linea nunca.
Empieza desde la segunda, es decir el codigo lee asi

                    1 diego mouse 3
linea 0         2 raul teclado 1
linea 1         2 pedro teclado 2
linea 2         2 luis USB3 2
linea 3         5 juan USB3 10
linea 4         7 lucho mouse 7
    .
    .
    .
linea n