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
Ir a la versión completa