Pregunta

Hola tengo un problema con el siguiente código:

 int skp = 1;
    do{
    file.seekp(skp);
    file>>s;
    cout<<s;
    stats[s]++;
    skp++;
    skp++;
    }while(skp <= 10);

El archivo de texto tiene lo siguiente: 0

1

2

3

0

1

0

1

0

Lo que quiero que haga esta programación es comenzar a leer el segundo número que hace, luego omita una lectura a continuación, omita una lectura al siguiente, etc., etc. Lo que está haciendo es leer el segundo número que es bueno, luego lo lee nuevamente para 2 veces, luego lea el siguiente número por 3 veces y el siguiente por 3 veces. Entonces, la salida que recibo del archivo de texto anterior es 1112223330.

¿Alguien puede ayudarme por favor! ¡Gracias!

¿Fue útil?

Solución

Esto se debe a que sus líneas están separadas por alimentos de línea (en realidad CR y LF). También, file >> s saltará el espacio en blanco líder, para que termines con

 <CR><LF>1 
 <LF>1
 1

Todo lo cual da como resultado s siendo 1.

Lo mismo se repite para 2, 3 y así sucesivamente.

Olvídate de you buscp () y simplemente usa

while (file.good()) {
 file >> s; // skip line
 if (!file.good()) break;
 file >> s;
 cout << s;
 stats[s]++;
} 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top