Programación General > C/C++

 Como escribir en un archivo desde una función - C++

(1/1)

tiwanacote:
Estimada gente, soy bastante nuevo en el tema y pido una ayuda para resolver este tema.


 Dentro de "main" defino una variable de flujo llamada "archivo" que conecta a "prueba.txt" , luego, lo que no me sale, es escribir desde una función llamada "escribir" en el archivo "prueba.txt"

Como errores me pone:

14|error: 'ofstream' has not been declared|
51|error: 'ofstream' has not been declared|
|In function 'void escribir(double, int)':|
55|error: invalid operands of types 'int' and 'const char [27]' to binary 'operator<<'|
||=== Build finished: 3 errors, 0 warnings ===|

El código simplificado que armé para explicarme es el siguiente:


#include <iostream>
#include <fstream>    

void escribir (double entrada);

int main()
{
    using namespace std;
    ofstream archivo;  
    archivo.open("prueba.txt", ios::app);

    double entrada;

    cout << "Ingrese el numero de entrada a escribir en el archivo" << endl;
    cin >> entrada;

    archivo << "Eso fue todo lo que escribimos en el archivo";

    archivo.close();   // Cierra el archivo de salida en donde aparecen todos los puntos.

    return(0);
}


void escribir (double entrada)
{
    using namespace std;
    double a = entrada;
    archivo << "El numero que escribo en el archivo es: " << a;
    cout << "No hay mas datos para escribir " << endl;
}

Muchas gracias!!

ProfesorX:
Probe el codigo que publicaste, y el detalle que note es que colocas la sentencia "using namespace std" dentro de main(), al igual que el nombre del archivo, si lo haces asi, no te reconocera el namespace, y por lo tanto, creo que esa es la razon por la que te marca el error de "ofstream has not been declared". y respecto al nombre de archivo, al estar declarado dentro de main, es una variable local, y tampoco te la reconocera dentro de la funcion escribir, en este caso, puedes o pasarle como parametro la variable archivo, o declarar archivo como global. Y el namespace se declara al principio de tu programa, lo mas comun y recomendable es despues de tus archivos include.

Te dejo el codigo corregido como creo que deberia ir, modifica tu codigo original en base a esto. Ah y tambien elimine la variable local "a" de la funcion escribir, me parece que es innnecesaria, y utilizo directamente el parametro entrada.


--- Código: C++ --- #include <iostream>#include <fstream> // Los namesapce al principio, despues de los include, y no dentro de cada funcion como lo estas haciendo.using namespace std;// variable declarada como global, para que la reconozca la funcion escribir.// tambien podrias pasarla como parametro, en caso de que no quieras variables globalesofstream archivo; void escribir (double entrada); int main(){    archivo.open("prueba.txt", ios::app);     double entrada;     cout << "Ingrese el numero de entrada a escribir en el archivo" << endl;    cin >> entrada;     archivo << "Eso fue todo lo que escribimos en el archivo";     archivo.close(); // Cierra el archivo de salida en donde aparecen todos los puntos.     return(0);} void escribir (double entrada){    // variable local innecesaria a mi parecer, utilza directamente el parametro entrada    //double a = entrada;    archivo << "El numero que escribo en el archivo es: " << entrada;    cout << "No hay mas datos para escribir " << endl;}   
Saludos :)

tiwanacote:
Muchisimas gracias!!! Has estado muy claro en la explicación! Funcionó perfecto!

Saludos! :D

Navegación

[0] Índice de Mensajes

Ir a la versión completa