Foros del Web » Programación para mayores de 30 ;) » C/C++ »

¿Cómo invertir un archivo de salida?

Estas en el tema de ¿Cómo invertir un archivo de salida? en el foro de C/C++ en Foros del Web. Hola. Necesito invertir en el archivo de salida el contenido que tengo en un archivo de entrada, en este caso son las vocales, pero no ...
  #1 (permalink)  
Antiguo 25/04/2016, 04:44
fercho7255
Invitado
 
Mensajes: n/a
Puntos:
¿Cómo invertir un archivo de salida?

Hola.
Necesito invertir en el archivo de salida el contenido que tengo en un archivo de entrada, en este caso son las vocales, pero no sé que aplicarle a la función para invertirlas. ¿Qué podría hacer? Esto es lo que he hecho:

#include<iostream>
#include<cstdlib>
#include<fstream>


using namespace std;


int leer_char(istream& is){
char p;
is >> p;
return p;
};

ostream& escribir_char(char p, ostream& os){
os << p;
os <<'\t' ;
return os;
};



int main() {
ifstream ifs("vocales.txt");
ofstream ofs("salida_vocales.txt");
escribir_char(leer_char (ifs), ofs);
escribir_char(leer_char (ifs), ofs);
escribir_char(leer_char (ifs), ofs);
escribir_char(leer_char (ifs), ofs);
escribir_char(leer_char (ifs), ofs);
ifs.close();
ofs.close();

cout << endl;
system("pause");
return EXIT_SUCCESS;
};
  #2 (permalink)  
Antiguo 25/04/2016, 05:20
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 2 meses
Puntos: 27
Respuesta: ¿Cómo invertir un archivo de salida?

No hay función en el estándar que directamente haga lo que dices. Una solución a este problema es almacenar en un array o vector el contenido de la entrada y escribir desde el final del vector hasta el principio en el archivo de salida
  #3 (permalink)  
Antiguo 25/04/2016, 06:27
 
Fecha de Ingreso: abril-2016
Mensajes: 31
Antigüedad: 8 años
Puntos: 5
Respuesta: ¿Cómo invertir un archivo de salida?

Hola; de la biblioteca estándar te pueden servir std::reverse, std::reverse_copy() y std::copy_backward().

Un ejemplo con reverse:

Código C++:
Ver original
  1. #include <fstream>
  2. #include <string>
  3. #include <iterator>
  4. #include <algorithm>
  5.  
  6. int main()
  7. {
  8.     std::ifstream ifs("entrada.txt");
  9.     std::ofstream ofs("salida.txt");
  10.  
  11.     std::string str((std::istreambuf_iterator<char>(ifs)),
  12.                      std::istreambuf_iterator<char>());
  13.  
  14.     std::reverse(str.begin(), str.end());
  15.     ofs << str;
  16. }

Etiquetas: char, int, invertir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:51.