Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: hari en 13 Julio 2011, 01:24 am



Título: Saltar de linea al leer de un fichero
Publicado por: hari en 13 Julio 2011, 01:24 am
Buenas,
estaba haciendo un programa, que lea caracteres de un fichero y los escriba de otro de manera que solo lea la primera palabra de cada linea.

Código
  1. char buffer;
  2.  
  3. while(!fi.eof()){
  4. fi >> buffer;
  5. cout << buffer << endl;
  6. while(buffer != ' '){
  7. fo << buffer;
  8. fi >> buffer;
  9. cout << buffer << endl;
  10. }
  11. fo << endl;
  12.  
  13. }
  14.  
  15.  
  16.  

Lo que no se, es como hago para "saltar de linea" en el fichero de lecura.

Muchas gracias


Título: Re: Saltar de linea al leer de un fichero
Publicado por: .:BlackCoder:. en 13 Julio 2011, 15:51 pm
Puedes leer en una cadena el resto de lo que queda en la linea, con getline... o preferiblemente, usa el metodo ignore() de los istream...
http://www.cplusplus.com/reference/iostream/istream/ignore/

Saludos


Título: Re: Saltar de linea al leer de un fichero
Publicado por: rir3760 en 13 Julio 2011, 19:46 pm
Para procesar y descartar manualmente el espacio blanco puedes utilizar el manipulador "noskipws", por ejemplo:
Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4. using std::noskipws;
  5.  
  6. #include <fstream>
  7. using std::ifstream;
  8.  
  9. #include <cctype>
  10. using std::isspace;
  11.  
  12. int main()
  13. {
  14.   ifstream entrada("Entrada.txt");
  15.   entrada >> std::noskipws;
  16.  
  17.   bool descartar = false;
  18.   char ch;
  19.   while (entrada >> ch) {
  20.      if (!descartar) {
  21.         if (!isspace(ch) )
  22.            cout << ch;
  23.         else {
  24.            cout << endl;
  25.            descartar = true;
  26.         }
  27.      }
  28.  
  29.      if (ch == '\n')
  30.         descartar = false;
  31.   }
  32.   entrada.close();
  33.  
  34.   return 0;
  35. }


Una mejor opcion como ya indico .:BlackCoder:. es utilizar la funcion miembro "ignore", por ejemplo:
Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4.  
  5. #include <fstream>
  6. using std::ifstream;
  7.  
  8. #include <limits>
  9. using std::numeric_limits;
  10.  
  11. #include <string>
  12. using std::string;
  13.  
  14. int main()
  15. {
  16.   ifstream entrada("Entrada.txt");
  17.   string palabra;
  18.  
  19.   while (entrada >> palabra) {
  20.      cout << palabra << endl;
  21.      entrada.ignore(numeric_limits<int>::max(), '\n');
  22.   }
  23.   entrada.close();
  24.  
  25.   return 0;
  26. }

Un saludo


Título: Re: Saltar de linea al leer de un fichero
Publicado por: hari en 14 Julio 2011, 11:53 am
gracias! creo que usare ignore().
Muchas gracias a los dos!