Autor
|
Tema: [C++] Crear archivo .txt [SOLUCIONADO] (Leído 7,954 veces)
|
DeMoNcRaZy
Desconectado
Mensajes: 420
$~*|_
|
Buenas, Estoy probando a crear archivos de textos, guardando datos, etc.. Tengo este código: #include <iostream> #include <fstream> using namespace std; int main(){ string nombre; cout << "Introduzca el nombre del archivo: "; cin >> nombre; if(nombre == "5"){ char cadena[128]; // Creamos un fichero de salida ofstream fs(nombre.".txt"); } else{ cout << "Nombre no valido." << endl; } cin.get(); return 0; }
Todo funciona bien. Pero me salta un error acá: ofstream fs(nombre.".txt");
Se que es por la variable "nombre.", pero estoy intentando buscar información y no doy con el resultado... y el if no se como ponerlo para que se ejecute si el campo no está en blanco u es un número. Si me pudieran dar una ayudita u pista lo agradecería. Un cordial saludo.
|
|
« Última modificación: 14 Mayo 2015, 21:23 pm por YuseTist »
|
En línea
|
Esta página web no está disponible - Google Chrome
|
|
|
Stakewinner00
|
ejemplo básico hellow world en fichero #include <fstream> #include <string> #include <iostream> int main() { std::string name_file; std::cin >> name_file; name_file += ".txt"; std::ofstream file(name_file.c_str()); file << "Hello world"; file.close(); }
al ofstream se le ha de pasar un const char*
|
|
« Última modificación: 14 Mayo 2015, 17:51 pm por Stakewinner00 »
|
En línea
|
|
|
|
DeMoNcRaZy
Desconectado
Mensajes: 420
$~*|_
|
Gracias, ya solucioné el problema. Ahora tengo otro problemilla al leer un string con espacios. Tengo esto: string nombre; string texto; cout << "Introduzca el nombre del archivo: "; cin >> nombre; cout << "Texto: "; getline(cin, texto); nombre += ".txt"; ofstream file(nombre.c_str()); file << texto << endl; file.close();
La variable texto no puedo leerla con "cin" ya que se para en el primer espacio, estoy probando con getline, pero no se guarda el texto. Gracias.
|
|
|
En línea
|
Esta página web no está disponible - Google Chrome
|
|
|
Stakewinner00
|
No se que error tienes con el getline, en teoría es algo así #include <iostream> #include <string> int main() { std::string str; getline(std::cin, str); std::cout << str << std::endl; }
|
|
|
En línea
|
|
|
|
DeMoNcRaZy
Desconectado
Mensajes: 420
$~*|_
|
Este es el resultado que me da: Y este el código: #include <iostream> #include <fstream> #include <string> using namespace std; int main(){ string nombre; string str; cout << "Introduzca el nombre del archivo: "; cin >> nombre; cout << "Texto: "; getline(cin, str); nombre += ".txt"; ofstream file(nombre.c_str()); file << str << endl; file.close(); cin.get(); return 0; }
|
|
|
En línea
|
Esta página web no está disponible - Google Chrome
|
|
|
Stakewinner00
|
Ya lo modifique un poco #include <iostream> #include <fstream> #include <string> using namespace std; int main(){ string nombre; string str; cout << "Introduzca el nombre del archivo: "; cin >> nombre; cin.ignore(2, '\n'); //cin >> nombre guarda el salto de línea en el buffer //y luego en getline directamente es como si presionaras enter cout << "Texto: "; getline(cin, str); nombre += ".txt"; ofstream file(nombre.c_str()); file.write(str.c_str(), str.size()); //Así también escribe los datos si tiene espacios y demás separadores file.close(); cin.get(); return 0; }
|
|
|
En línea
|
|
|
|
DeMoNcRaZy
Desconectado
Mensajes: 420
$~*|_
|
Gracias, Ahora mi duda es la siguiente, Leo el archivo y me aparece todo bien, pero no está bien ordenado. Me aparece así: Cuándo debería aparecerme así que es como la tengo guardada: He probado saltos de líneas, endl, \n, pero se me salta cada palabra en vez de cada frase. Gracias.
|
|
|
En línea
|
Esta página web no está disponible - Google Chrome
|
|
|
Stakewinner00
|
el operador >> de ifstream omite los separadores, lo más sencillo es hacer algo tipo string str; while( !file.eof()) { char c = file.get(); str += c; if(c == '\n') { std::cout << str; str = ""; } }
|
|
|
En línea
|
|
|
|
DeMoNcRaZy
Desconectado
Mensajes: 420
$~*|_
|
el operador >> de ifstream omite los separadores, lo más sencillo es hacer algo tipo string str; while( !file.eof()) { char c = file.get(); str += c; if(c == '\n') { std::cout << str; str = ""; } }
Gracias por la ayuda, ya lo voy entendiendo todo poco a poco.
|
|
|
En línea
|
Esta página web no está disponible - Google Chrome
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Crear archivo reproducible de DVD a partir de archivo MPG con Canopus ProCoder
Multimedia
|
aula18
|
2
|
5,438
|
8 Septiembre 2004, 23:28 pm
por Songoku
|
|
|
(Solucionado) Crear un archivo desde el menú contextual con contenido escrito?
Windows
|
Eleкtro
|
7
|
6,225
|
24 Diciembre 2012, 16:53 pm
por Eleкtro
|
|
|
Alguien save como crear archivo php igual que el archivo de texto
Windows
|
BrokerJoker
|
6
|
6,731
|
17 Mayo 2012, 02:47 am
por #!drvy
|
|
|
Crear nueva entrada en menú contextual de CREAR ARCHIVO TXT
« 1 2 3 »
Windows
|
Esgrimidor
|
25
|
20,984
|
30 Junio 2012, 08:26 am
por Eleкtro
|
|
|
Crear archivo Exe con un archivo dentro de los Resources, sería posible?
.NET (C#, VB.NET, ASP)
|
z3nth10n
|
4
|
3,624
|
3 Julio 2013, 19:55 pm
por z3nth10n
|
|