Hola, yo de nuevo con otra duda. Verán; hice un código el cual me guarda en un archivo el contenido de un String, hasta ahí todo bien. Lo que me gustaría hacer, es que yo pueda introducir una variable en el nombre del archivo a guardar, a ver si me entendieron.
El código que tengo es este:
ofstream miScript;
miScript.open("archivos/miScript.txt");
miScript<< descripcionScript;
miScript.close();
Y quiero que me quede algo como esto:
ofstream miScript;
miScript.open("archivos/" + tituloScript + ".txt");
miScript<< descripcionScript;
miScript.close();
Sólo que no sé como se haría, ya que eso me da error de compilación.
Espero me puedan ayudar.
Saludos ^^
tenes que concatenar la variable
strcat( tituloScript, ".txt" );
y asi hasta tener lo que querés
Cita de: qily en 23 Noviembre 2010, 02:39 AM
tenes que concatenar la variable
strcat( tituloScript, ".txt" );
y asi hasta tener lo que querés
Sí, pero igual si hago:
strcat(nombreScript, ".txt");
ofstream miScript;
miScript.open(nombreScript);
miScript<< descripcionScript;
miScript.close();
Me da error. Osea, lo que no me permite es poner una variable en los parámetros del open :-S
ahh..
Que error te devuelve?
..esto tampoco funciona?
ofstream miScript(nombreScript);
miScript<< descripcionScript;
miScript.close();
Compilador: Default compiler
Ejecutando g++.exe...
g++.exe "C:\Users\Kevin\Desktop\ScriptManager\manager.cpp" -o "C:\Users\Kevin\Desktop\ScriptManager\manager.exe" -I"C:\Dev-Cpp\include\c++\3.3.1" -I"C:\Dev-Cpp\include\c++\3.3.1\mingw32" -I"C:\Dev-Cpp\include\c++\3.3.1\backward" -I"C:\Dev-Cpp\lib\gcc-lib\mingw32\3.3.1\include" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib" -lconio
C:/Users/Kevin/Desktop/ScriptManager/manager.cpp: In function `void
agregarScript()':
C:/Users/Kevin/Desktop/ScriptManager/manager.cpp:122: error: no matching
function for call to `std::basic_ofstream<char, std::char_traits<char> >::
open(std::string&)'
C:/Dev-Cpp/include/c++/3.3.1/fstream:691: error: candidates are: void
std::basic_ofstream<_CharT, _Traits>::open(const char*, std::_Ios_Openmode)
[with _CharT = char, _Traits = std::char_traits<char>]
La variable "nombreScript" es un string?
No tiene que ser un string.
Sí lo es, de hecho es xq ahí almaceno el contenido de un cin... ¿qué debo de hacer?
El método open no acepta string.
Tendrías que tener una cadena de caracteres ( char auxiliar[100] ). Y ahi pasas lo que tenes en el string y después si lo pasas al open.
Si lo que te interesa del string es poder ingresar una cadena "infinita" y no querés hacer char auxiliar[100] porque tal vez se necesite mas, entonces hace una cadena con memoria dinamica y le pones el tamaño de acuerdo al tamaño del string.
se entiende?
Gracias, no sabía que no admitía string xD... al final me ha quedado así:
// Crear el archivo
string nombreArchivo = "archivos/" + nombreScript + " - " + categoriaScript + ".txt";
char *rutaArchivo = strdup(nombreArchivo.c_str());
ofstream miScript;
miScript.open(rutaArchivo);
miScript << "Titulo: " << nombreScript << "\nCategoría: " << categoriaScript << "\nCódigo:\n\n" << descripcionScript;
miScript.close();
denada.. ya te funciono?.. no admite es una lastima XD jeje
Si, en realidad una lástima xD... y sí, me funcionó.
Ahora, tengo otra duda (soy novato en el C++, pero tengo bastante experiencia en otros lenguajes web); ¿cómo puedo crear archivos de datos con c++?
Nota: uso la última versión de C++
es lo que venias haciendo con ofstream.
Si no podes usar las funciones:
fopen ( abrir un archivo )
fwrite ( escribir en archivo )
fread ( leer de archivo )
Si queres saber algo mas complejo tendrías que abrir otro hilo. =)