elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda: ios::out e ios::ate
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda: ios::out e ios::ate  (Leído 3,896 veces)
erest0r

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Duda: ios::out e ios::ate
« en: 17 Agosto 2014, 23:55 pm »

Hola, estoy algo confuso con esos 2 modos, por lo que leí ios::out crea un archivo en modo salida, y si existe lo sobrescribe, ios::ate abre un archivo en modo salida y se desplaza al final del archivo pero se puede mover a través de él, pero tengo este código de practica que estuve leyendo e ios::ate borra todo lo existia en el archivo

Código
  1. #include <iostream>
  2. using std::cerr;
  3. using std::cin;
  4. using std::cout;
  5. using std::endl;
  6. using std::ios;
  7.  
  8. #include <fstream> // flujo de archivo
  9. using std::ofstream; // flujo de archivo de salida
  10.  
  11. #include <cstdlib>
  12. using std::exit;
  13.  
  14. int main()
  15. {
  16. // el constructor de ofstream abre el archivo
  17.    ofstream archivoClienteSalida( "clientes.dat", ios::ate ); // originalmente era ios::out y lo coloque ios::ate para probar
  18.  
  19.    // sale del programa si no puede crear el archivo
  20.    if ( !archivoClienteSalida ) // operador ! sobrecargado
  21.    {
  22.     cerr << "No se pudo abrir el archivo" << endl;
  23.     exit( 1 );
  24.    }
  25.  
  26.    cout << "Escriba la cuenta, nombre y saldo." << endl
  27.     << "Escriba fin de archivo ( Ctrl + Z ) para terminar la entrada.\n?";
  28.  
  29.    int cuenta;
  30.    char nombre[30];
  31.    double saldo;
  32.  
  33.    // lee la cuenta, nombre y saldo de cin y despues los coloca en el archivo
  34.    while ( cin >> cuenta >> nombre >> saldo )
  35.    {
  36.     archivoClienteSalida << cuenta << ' ' << nombre << ' ' << saldo << endl;
  37.     cout << "?";
  38.    }
  39.  
  40.    return 0;
  41. }
  42.  


En línea

Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Duda: ios::out e ios::ate
« Respuesta #1 en: 18 Agosto 2014, 00:44 am »

en vez de "ate" usa "ios::app". A ver si te va.

Por cierto, que veo que pones muchos "using". Te llega con poner "using namespace std;".


« Última modificación: 18 Agosto 2014, 00:47 am por ivancea96 » En línea

erest0r

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: Duda: ios::out e ios::ate
« Respuesta #2 en: 18 Agosto 2014, 02:02 am »

ios::app sí almacena los datos al final del archivo, pero siempre lo hace al final por lo que he leído, en cambio ios::ate debería moverse a través de este y agregar los datos en cualquier parte.

Lo del exceso de "using" es por como había dicho anteriormente, era un código de practica que leí.
En línea

Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Duda: ios::out e ios::ate
« Respuesta #3 en: 18 Agosto 2014, 02:45 am »

Pero tal como usas en ese código ofstream, te debería servir con ios::app.
En línea

erest0r

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: Duda: ios::out e ios::ate
« Respuesta #4 en: 18 Agosto 2014, 03:14 am »

Sí, pero el punto es que, ¿ si uso ios::ate, no debería posicionarse al final sin sobrescribir el contenido?



O saber el equivalente al modo "r+" de la función fopen en C, ya que ios::app funcionaria como "a+", y pensé que ios::ate funcionaria como "r+", perro viendo como funciona ese código veo que no, o quizás me esta faltando algo
« Última modificación: 18 Agosto 2014, 11:47 am por Eternal Idol » En línea

Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Duda: ios::out e ios::ate
« Respuesta #5 en: 18 Agosto 2014, 12:31 pm »

Para que no te sobrescriba, tienes que abrir un fstream con ambas ios::out e ios::in, más el ios::ate, claro.
En línea

erest0r

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: Duda: ios::out e ios::ate
« Respuesta #6 en: 18 Agosto 2014, 18:33 pm »

Gracias =)
En línea

Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
revenge1252 9 9,706 Último mensaje 13 Febrero 2008, 21:41 pm
por revenge1252
Duda duda y duda de Metasploit
Bugs y Exploits
huber_nomas 4 5,739 Último mensaje 17 Febrero 2012, 14:00 pm
por MauroMasciar
Duda facil, [VIDEO QUE EXPLICA MI DUDA]
Diseño Gráfico
Ngeooz 6 8,803 Último mensaje 2 Diciembre 2013, 19:33 pm
por Ngeooz
[DUDA] Cambiar letra de unidad a archivo con un Batch [DUDA] « 1 2 »
Windows
MrMaticool 10 11,161 Último mensaje 12 Febrero 2014, 17:55 pm
por MrMaticool
[DUDA][LICENCIA][GPL]tengo una duda sobre las caracteristicas de la licencia GPL
Dudas Generales
Noxware 0 1,838 Último mensaje 2 Mayo 2014, 00:34 am
por Noxware
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines