Hacer ... mientras que el bucle/texto de texto/problema de operación
-
25-10-2019 - |
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!
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]++;
}