elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C++] Crear archivo .txt [SOLUCIONADO]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C++] Crear archivo .txt [SOLUCIONADO]  (Leído 7,954 veces)
DeMoNcRaZy


Desconectado Desconectado

Mensajes: 420


$~*|_


Ver Perfil
[C++] Crear archivo .txt [SOLUCIONADO]
« en: 14 Mayo 2015, 17:33 pm »

Buenas,

Estoy probando a crear archivos de textos, guardando datos, etc..

Tengo este código:

Código
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7.  
  8. string nombre;
  9.  
  10. cout << "Introduzca el nombre del archivo: ";
  11. cin >> nombre;
  12.  
  13. if(nombre == "5"){
  14. char cadena[128];
  15.    // Creamos un fichero de salida
  16.    ofstream fs(nombre.".txt");
  17. }
  18. else{
  19. cout << "Nombre no valido." << endl;
  20. }
  21.  
  22.  
  23. cin.get();
  24. return 0;
  25. }

Todo funciona bien.

Pero me salta un error acá:

Código
  1. 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


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [C++] Crear archivo .txt
« Respuesta #1 en: 14 Mayo 2015, 17:37 pm »

ejemplo básico hellow world en fichero
Código
  1. #include <fstream>
  2. #include <string>
  3. #include <iostream>
  4.  
  5. int main()
  6. {
  7.  std::string name_file;
  8.  std::cin >> name_file;
  9.  name_file += ".txt";
  10.  std::ofstream file(name_file.c_str());
  11.  file << "Hello world";
  12.  file.close();
  13. }
  14.  

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 Desconectado

Mensajes: 420


$~*|_


Ver Perfil
Re: [C++] Crear archivo .txt
« Respuesta #2 en: 14 Mayo 2015, 18:03 pm »

Gracias, ya solucioné el problema.

Ahora tengo otro problemilla al leer un string con espacios.

Tengo esto:

Código
  1.        string nombre;
  2. string texto;
  3.  
  4. cout << "Introduzca el nombre del archivo: ";
  5. cin >> nombre;
  6.  
  7. cout << "Texto: ";
  8. getline(cin, texto);
  9.  
  10. nombre += ".txt";
  11.  
  12. ofstream file(nombre.c_str());
  13.  
  14. file << texto << endl;
  15.  
  16. 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


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [C++] Crear archivo .txt
« Respuesta #3 en: 14 Mayo 2015, 18:16 pm »

No se que error tienes con el getline, en teoría es algo así
Código
  1. #include <iostream>
  2. #include <string>
  3. int main()
  4. {
  5.   std::string str;
  6.   getline(std::cin, str);
  7.  
  8.   std::cout << str << std::endl;
  9. }
  10.  
En línea

DeMoNcRaZy


Desconectado Desconectado

Mensajes: 420


$~*|_


Ver Perfil
Re: [C++] Crear archivo .txt
« Respuesta #4 en: 14 Mayo 2015, 18:58 pm »

Este es el resultado que me da:



Y este el código:

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int main(){
  8.  
  9. string nombre;
  10. string str;
  11.  
  12. cout << "Introduzca el nombre del archivo: ";
  13. cin >> nombre;
  14.  
  15. cout << "Texto: ";
  16. getline(cin, str);
  17.  
  18. nombre += ".txt";
  19.  
  20. ofstream file(nombre.c_str());
  21.  
  22. file << str << endl;
  23.  
  24. file.close();
  25.  
  26. cin.get();
  27. return 0;
  28. }
En línea

Esta página web no está disponible - Google Chrome
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [C++] Crear archivo .txt
« Respuesta #5 en: 14 Mayo 2015, 19:15 pm »

Ya lo modifique un poco

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int main(){
  8.  
  9. string nombre;
  10. string str;
  11.  
  12. cout << "Introduzca el nombre del archivo: ";
  13. cin >> nombre;
  14.  
  15.        cin.ignore(2, '\n'); //cin >> nombre guarda el salto de línea en el buffer
  16.                                    //y luego en getline directamente es como si presionaras enter
  17.  
  18. cout << "Texto: ";
  19. getline(cin, str);
  20.  
  21. nombre += ".txt";
  22.  
  23. ofstream file(nombre.c_str());
  24.  
  25. file.write(str.c_str(), str.size()); //Así también escribe los datos si tiene espacios y demás separadores
  26.  
  27. file.close();
  28.  
  29. cin.get();
  30. return 0;
  31. }
En línea

DeMoNcRaZy


Desconectado Desconectado

Mensajes: 420


$~*|_


Ver Perfil
Re: [C++] Crear archivo .txt
« Respuesta #6 en: 14 Mayo 2015, 20:20 pm »

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


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [C++] Crear archivo .txt
« Respuesta #7 en: 14 Mayo 2015, 20:27 pm »

el operador >> de ifstream omite los separadores, lo más sencillo es hacer algo tipo

Código
  1. string str;
  2. while( !file.eof())
  3. {
  4.   char c = file.get();
  5.   str += c;
  6.   if(c == '\n') {
  7.       std::cout << str;
  8.   str = "";
  9.   }
  10. }
  11.  
En línea

DeMoNcRaZy


Desconectado Desconectado

Mensajes: 420


$~*|_


Ver Perfil
Re: [C++] Crear archivo .txt
« Respuesta #8 en: 14 Mayo 2015, 21:23 pm »

el operador >> de ifstream omite los separadores, lo más sencillo es hacer algo tipo

Código
  1. string str;
  2. while( !file.eof())
  3. {
  4.   char c = file.get();
  5.   str += c;
  6.   if(c == '\n') {
  7.       std::cout << str;
  8.   str = "";
  9.   }
  10. }
  11.  

Gracias por la ayuda, ya lo voy entendiendo todo poco a poco.
En línea

Esta página web no está disponible - Google Chrome
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines