Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/06/2016, 11:55
dmorill
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 10 años, 4 meses
Puntos: 1
Borrar caracteres de un txt

Hola amigos, espero que se encuentren muy bien.

Tengo unos txt grandes llenos de información que terminan así:
Código C++:
Ver original
  1. .
  2. .
  3. .
  4. [109,   116,    123,    128,    147],
  5. [109,   116,    123,    142,    115],
  6. [109,   116,    123,    142,    134],
  7. ]

Y deseo eliminar ese ultimo "]"y la "," de la ultima linea, supuse que era una tarea muy fácil, como escribir un archivo. Pero para mi sorpresa no encontré mucha información de cómo hacerlo. Por ahora tengo este programa:

Código C++:
Ver original
  1. #include <iostream>;
  2. #include <fstream>;
  3. #include <string>;
  4. using namespace std;
  5.  
  6. void path(string &s);
  7.  
  8. int main() {
  9.     string donde;
  10.     path(donde);
  11.     donde = donde + "texto.txt";
  12.     fstream fin;
  13.  
  14.     fin.open(donde, fstream::ate | fstream::in | fstream::out); //ate es para empezar el cursor al fnial, es diferente de ::app
  15.     if (fin.is_open()== false) {
  16.         cout << "Horror...";
  17.         return 0;
  18.     }
  19.     //fin << "\b\b"; //Aquí se supone que debería poder hacer un backspace pero no funciona
  20.    
  21.     fin.close();
  22.  
  23.     cin.get();
  24.     return 0;
  25. }
  26.  
  27. void path(string &s) {
  28.     char* pchar;
  29.     _get_pgmptr(&pchar);
  30.     string aux(pchar); int y = 0, i = 0;
  31.     for (i = aux.size(); i >= 0; i--) {
  32.         if (aux[i - 1] == char(92)) {
  33.             y++;
  34.             if (y == 1) break;
  35.         }
  36.     }
  37.     aux = aux.substr(0, i);
  38.     s = aux;
  39. }

Alguna idea?

Update: Sé que se podría leer el archivo y escribir otro sin ese carácter, pero por la cantidad de archivos y sus tamaños (600mb y más) no lo veo adecuado yo busco otras alternativas.

Gracias.

Última edición por dmorill; 28/06/2016 a las 12:13 Razón: Más información.