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.
char buffer;
while(!fi.eof()){
fi >> buffer;
cout << buffer << endl;
while(buffer != ' '){
fo << buffer;
fi >> buffer;
cout << buffer << endl;
}
fo << endl;
}
Lo que no se, es como hago para "saltar de linea" en el fichero de lecura.
Muchas gracias
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
Para procesar y descartar manualmente el espacio blanco puedes utilizar el manipulador "noskipws", por ejemplo:
#include <iostream>
using std::cout;
using std::endl;
using std::noskipws;
#include <fstream>
using std::ifstream;
#include <cctype>
using std::isspace;
int main()
{
ifstream entrada("Entrada.txt");
entrada >> std::noskipws;
bool descartar = false;
char ch;
while (entrada >> ch) {
if (!descartar) {
if (!isspace(ch) )
cout << ch;
else {
cout << endl;
descartar = true;
}
}
if (ch == '\n')
descartar = false;
}
entrada.close();
return 0;
}
Una mejor opcion como ya indico .:BlackCoder:. es utilizar la funcion miembro "ignore", por ejemplo:
#include <iostream>
using std::cout;
using std::endl;
#include <fstream>
using std::ifstream;
#include <limits>
using std::numeric_limits;
#include <string>
using std::string;
int main()
{
ifstream entrada("Entrada.txt");
string palabra;
while (entrada >> palabra) {
cout << palabra << endl;
entrada.ignore(numeric_limits<int>::max(), '\n');
}
entrada.close();
return 0;
}
Un saludo
gracias! creo que usare ignore().
Muchas gracias a los dos!