Ver Mensaje Individual
  #13 (permalink)  
Antiguo 15/04/2014, 13:52
Urban94
 
Fecha de Ingreso: marzo-2014
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Como eliminar una linea de un txt

Cita:
Iniciado por Principe_Azul Ver Mensaje
Hola Urban94, por fin he podido hacer el código que necesitás, me ha llevado días, pero era algo simple, aunque no es la primera vez que me pasa.
Lo que pasa que muchas veces la cabeza debe descansar y luego cuando volvés a sentarte en la pc, lo hacés como si fuese que vino un ingeniero y te dijo esto se hace así, así y así; pude hacerlo porque despejé un momento mi mente y cuando volví le entendí al código, había hecho algo que me estaba fallando y además eran innecesarias algunas cosas, pero bueno pude terminarlo sim problemas.

Quiero comentarte que lo he probado y funciona perfectamente!!!
El código es este:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. int main() {
  7.  
  8.     char linea[1280];
  9.     int IncNums = 0;
  10.     string cadena1;
  11.     ifstream Lectura("Lectura.txt");
  12.     ofstream Escritura("Escritura.txt");
  13.     Lectura.getline(linea, 1280);
  14.     string p1;
  15.     vector<string> GuardaDatos(0);
  16.  
  17.     while (!Lectura.eof()) {
  18.         p1 = linea[0];
  19.         cadena1 = linea[1];
  20.         IncNums++;
  21.  
  22.         if (p1=="a"){
  23.             if (cadena1=="c"){
  24.                 Escritura << linea << endl; // esta linea la guardo en un txt pero tambien es la que quiero eliminar del archivo original
  25.             }
  26.         }
  27.         else if (p1=="b"){
  28.             if (cadena1=="m"){
  29.                 Escritura << linea << endl;// esta linea la guardo en un txt pero tambien es la que quiero eliminar del archivo original
  30.             }
  31.         }
  32.         else if (p1=="c"){
  33.             if (cadena1=="g"){
  34.                 Escritura << linea << endl;// esta linea la guardo en un txt pero tambien es la que quiero eliminar del archivo original
  35.             }
  36.         }
  37.         else {
  38.             GuardaDatos.push_back(linea);
  39.         }
  40.         Lectura.getline(linea, 1280);
  41.     }
  42.  
  43.     Escritura.close();
  44.     Lectura.close();
  45.  
  46.     ofstream Escritura1("Lectura.txt");
  47.     int Nums1 = 0;
  48.     int TotalPals = GuardaDatos.size();
  49.  
  50.     while (Nums1 < TotalPals) {
  51.         Escritura1 << GuardaDatos[Nums1] << endl;
  52.         Nums1++;
  53.     }
  54.     Escritura1.close();
  55. }

Nota: El programa es case sensitive por lo que las mayúsculas y minúsculas se distinguirán, puedes cambiar este comportamiento aplicando uno de los 2 métodos: upper o lower a la variable p1.

Antes de que ejecutés el programa, debés crear un archivo en formato .txt de nombre Lectura con lo siguiente:

ac
bm
zx
cg
zx
ac
bm
zx
cg
zx
ac
bm
cg
ac
zx
bm
cg
zx
ac
bm
cg
zx
ac
bm
zx
cg
ac
bm
zx
cg
ac
zx
bm
cg
zx

El archivo de escritura no es necesario que lo crees ya que el programa lo hará por el mismo.

Cuando crees ese archivo y le escribás dentro de él lo que puse arriba, entónces ejecutá el programa y al terminar el mismo, te creará un archivo en formato .txt de nombre Escritura con lo siguiente:

ac
bm
cg
ac
bm
cg
ac
bm
cg
ac
bm
cg
ac
bm
cg
ac
bm
cg
ac
bm
cg
ac
bm
cg

y el archivo Lectura.txt te quedará con estos datos:

zx
zx
zx
zx
zx
zx
zx
zx
zx
zx
zx

Bueno eso es lo que querías, espero que sea eso!!!!!

Este es como mi cuarto programa en C++ mi siento felíz de haberlo podido hacer

Muchas gracias a las personas que no han querido postear la solución para dejarme el lugar a mi, así aprendo, les agradezco!!!

Buena suerte y hasta pronto.

PD: El archivo Lectura.txt debe estar en el mismo directorio que el programa, por ejemplo:

C:\Users\Daniel\Desktop\C++\Programa.exe
C:\Users\Daniel\Desktop\C++\Lectura.txt
Tienes toda la razon, estaba tan encascado en comparar 2 textos, que nunca se me hubiera ocurrido esta forma, la verdad esta genial. Muchas gracias!!