Añadir una nueva línea en un archivo (archivo de registro) en c++


Tengo una funcionalidad de registro y en esto tengo archivos de registro. Ahora cada vez que corro el programa que quiero que el archivo escrito anteriormente no debe ser eliminado y debe ser anexado con los datos actuales (lo que nunca hay en el archivo de registro)

Solo para dejarlo claro, por ejemplo: Tengo un archivo de registro logging_20120409.registro que mantiene la marca de tiempo sobre una base diaria. Supongamos que corro mi proyecto que escribe en él la marca de tiempo actual. Ahora si lo vuelvo a ejecutar la marca de tiempo anterior se sustituye consigo. No quiero esta funcionalidad. Quiero la marca de tiempo anterior junto con la marca de tiempo actual.

Por favor ayuda

Author: Rohit Vipin Mathews, 2012-04-09

3 answers

Desea abrir el archivo en modo "anexar", para que no elimine el contenido anterior del archivo. Lo hace especificando ios_base::app cuando abre el archivo:

std::ofstream log("logfile.txt", std::ios_base::app | std::ios_base::out);

Por ejemplo, cada vez que ejecute esto, agregará una línea más al archivo:

#include <ios>
#include <fstream>

int main(){
    std::ofstream log("logfile.txt", std::ios_base::app | std::ios_base::out);

    log << "line\n";
    return 0;
}

Así que, la primera vez que lo ejecutes, obtienes

line

La segunda vez:

line
line

Y así sucesivamente.

 49
Author: Jerry Coffin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-09 09:22:37

Usa algo como:

#include <fstream>
#include <iostream>
using namespace std;
int main() {
  ofstream out("try.txt", ios::app);
  out << "Hello, world!\n";
  return 0;
}

La opción ios:app hace que la salida se anexe al final del archivo en lugar de eliminar su contenido.

 3
Author: Ivaylo Strandjev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-09 09:13:31

Tal vez necesite abrir el archivo con la opción anexar. así:

FILE * pFile;
pFile = fopen ("myfile.txt","a");

O esto:

fstream filestr;
filestr.open ("test.txt", fstream::app)
 1
Author: WeaselFox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-09 09:17:09