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

[SOLUCIONADO] [C++] Declarar file

Estas en el tema de [C++] Declarar file en el foro de C/C++ en Foros del Web. Buenas, Tengo un problema al declarar un archivo (file), intento declararlo pero aún así no funciona. Intento sobre-escribir el texto de un archivo. Acá el ...
  #1 (permalink)  
Antiguo 16/05/2015, 04:14
Avatar de Tropy  
Fecha de Ingreso: diciembre-2013
Mensajes: 62
Antigüedad: 10 años, 4 meses
Puntos: 1
[C++] Declarar file

Buenas,

Tengo un problema al declarar un archivo (file), intento declararlo pero aún así no funciona. Intento sobre-escribir el texto de un archivo.

Acá el código:

Código C++:
Ver original
  1. string str;
  2.     string buscarNombre;
  3.     string hacerOpcion;
  4.     string empresaDos;
  5.     string edadDos;
  6.     FILE *pFile;
  7.    
  8.     cout << "Introduce el nombre a buscar: ";
  9.     cin >> buscarNombre;
  10.  
  11.     const char *datname; // No podemos modificar el valor
  12.    
  13.     buscarNombre = "archivos/" + buscarNombre + ".dat"; // Asignamos un valor a la variable
  14.    
  15.     datname = buscarNombre.c_str(); // c_str devuelve un const char*
  16.    
  17.     ifstream fe(datname);
  18.     if(fe.good()){
  19.         // Se muestra el contenido
  20.         while(!fe.eof())
  21.         {
  22.             char c = fe.get();
  23.             str += c;
  24.        
  25.             if(c == '\n') {
  26.                 cout << str;
  27.                 str = "";
  28.             }
  29.         }
  30.        
  31.         cout << "\n?Que desea hacer?" << endl;
  32.         cin >> hacerOpcion;
  33.        
  34.         if(hacerOpcion == "modificar"){
  35.             cout << "Modificando archivo..." << endl;
  36.            
  37.             ifstream fe(datname);
  38.            
  39.             if(fe.good()){
  40.                
  41.                 pFile = fopen("prueba.dat", "r+");
  42.                
  43.                 getline(cin, empresaDos);
  44.                 cout << "Empresa: ";
  45.                 getline(cin, empresaDos);
  46.    
  47.                 cout << "Edad: ";
  48.                 cin >> edadDos;
  49.    
  50.                 empresaDos = "Empresa: " + empresaDos;
  51.                 edadDos = "Edad: " + edadDos;
  52.    
  53.                 cin.ignore(2, '\n');
  54.                
  55.                 file.write(empresaDos.c_str(), empresaDos.size());
  56.                 file << endl;
  57.                 file << endl;
  58.                 file.write(edadDos.c_str(), edadDos.size());
  59.                
  60.                 file.close();
  61.             }
  62.         }
  63.         else{
  64.             cout << "La opcion seleccionada no existe." << endl;
  65.         }
  66.     }
  67.     else{
  68.         cout << "El archivo no ha sido encontrado." << endl;
  69.     }

Agradecería alguna ayuda.

Saludos.
  #2 (permalink)  
Antiguo 16/05/2015, 08:35
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: [C++] Declarar file

El segundo ifstream debería ser un ofstream:

Código C++:
Ver original
  1. if(hacerOpcion == "modificar"){
  2.             cout << "Modificando archivo..." << endl;
  3.            
  4.             ifstream fe(datname); ////// AQUI

Consejo: Usa nombres descriptivos para las variables y divide el código en funciones pequeñas (cuantas más pequeñas mejor).
  #3 (permalink)  
Antiguo 16/05/2015, 09:02
Avatar de Tropy  
Fecha de Ingreso: diciembre-2013
Mensajes: 62
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: [C++] Declarar file

Gracias por tu comentario,

He estado probando lo que me has comentado pero aún así me salta el error.

Imagen:




Código:

Código C++:
Ver original
  1. string str;
  2.     string buscarNombre;
  3.     string hacerOpcion;
  4.     string empresaDos;
  5.     string edadDos;
  6.    
  7.     cout << "Introduce el nombre a buscar: ";
  8.     cin >> buscarNombre;
  9.  
  10.     const char *datname; // No podemos modificar el valor
  11.    
  12.     buscarNombre = "archivos/" + buscarNombre + ".dat"; // Asignamos un valor a la variable
  13.    
  14.     datname = buscarNombre.c_str(); // c_str devuelve un const char*
  15.    
  16.     ifstream fe(datname);
  17.     if(fe.good()){
  18.         // Se muestra el contenido
  19.         while(!fe.eof())
  20.         {
  21.             char c = fe.get();
  22.             str += c;
  23.        
  24.             if(c == '\n') {
  25.                 cout << str;
  26.                 str = "";
  27.             }
  28.         }
  29.        
  30.         cout << "\n?Que desea hacer?" << endl;
  31.         cin >> hacerOpcion;
  32.        
  33.         if(hacerOpcion == "modificar"){
  34.             cout << "Modificando archivo..." << endl;
  35.            
  36.             ofstream fe(datname);
  37.                
  38.             getline(cin, empresaDos);
  39.             cout << "Empresa: ";
  40.             getline(cin, empresaDos);
  41.    
  42.             cout << "Edad: ";
  43.             cin >> edadDos;
  44.    
  45.             empresaDos = "Empresa: " + empresaDos;
  46.             edadDos = "Edad: " + edadDos;
  47.    
  48.             cin.ignore(2, '\n');
  49.                
  50.             file.write(empresaDos.c_str(), empresaDos.size());
  51.             file << endl;
  52.             file << endl;
  53.             file.write(edadDos.c_str(), edadDos.size());
  54.                
  55.             file.close();
  56.         }
  57.         else{
  58.             cout << "El archivo no ha sido encontrado." << endl;
  59.         }
  60.     }
  #4 (permalink)  
Antiguo 16/05/2015, 11:13
Avatar de Tropy  
Fecha de Ingreso: diciembre-2013
Mensajes: 62
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: [C++] Declarar file

Gracias por la ayuda, el otro problema que tenía era un fallo tonto.

Era en:

Código C++:
Ver original
  1. file.write(empresaDos.c_str(), empresaDos.size());
  2.             file << endl;
  3.             file << endl;
  4.             file.write(edadDos.c_str(), edadDos.size());


Fe en vez de file:

Código C++:
Ver original
  1. fe.write(empresaDos.c_str(), empresaDos.size());
  2.             fe << endl;
  3.             fe << endl;
  4.             fe.write(edadDos.c_str(), edadDos.size());

Gracias.

Etiquetas: char, declarar, file, funcion, int
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 20:12.