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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


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

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Ayuda guardado de archivo
« en: 27 Noviembre 2014, 13:25 pm »

No consigo que me cree el data2.txt.

Código
  1. #include<string>    // std::string
  2. #include<vector>    // std::vector<>
  3. #include<iostream>  // std::cout | std::cin | std::cerr
  4. #include<fstream>   // std::ifstream | std::ofstream
  5. #include<cstdlib>   // std::exit()
  6. #include<algorithm>  // std:: sort()
  7. #include <locale>
  8. #include <cctype>
  9. using namespace std;
  10.  
  11. vector<string> load_vector(const string&);
  12. void save_vector(const vector<string>&, const string&);
  13. void error(const string&);
  14.  
  15. int main() {
  16.    string filename2 = "data2.txt";
  17.    //locale loc;
  18.    string filename = "data.txt";
  19.    vector<string> text = load_vector(filename);
  20.  
  21.    sort(text.begin(), text.end());
  22.    text.erase(unique(text.begin(), text.end()), text.end());
  23.  
  24.    //for (unsigned int i=0; i<text.size(); i++) {
  25.      // text [i] = tolower (text[i], loc);
  26.   // }
  27.  
  28.    save_vector(text, filename2);
  29.    return 0;
  30.  
  31.  
  32.  
  33. }
  34.  
  35. vector<string> load_vector(const string& filename) {
  36.    vector<string> vi;
  37.  
  38.    ifstream ifile {filename};  
  39.  
  40.    if (!ifile)
  41.        error("load_vector cannot open the file " + filename);
  42.    copy(istream_iterator<string>(ifile), istream_iterator<string>(), back_inserter(vi));
  43.  
  44.    return vi;
  45. }
  46.  
  47.  
  48.  
  49. void save_vector(const vector<string>& vi, const string& filename2) {
  50.  
  51.    ofstream ofile ("data2.txt");  
  52.  
  53.    if (!ofile)
  54.        error("save_vector cannot open the file " + filename2);
  55.    for (auto n : vi)
  56.        ofile << n << ' ';
  57.    ofile.close();
  58.    cout << "\nVector written in file \"" << filename2 << "\"" << endl;
  59. }
  60. void error(const string& s) {
  61.    cerr << "Error: " << s << endl;
  62.    exit(EXIT_FAILURE);
  63. }
  64.  


« Última modificación: 27 Noviembre 2014, 13:28 pm por novatus84 » En línea

Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: Ayuda guardado de archivo
« Respuesta #1 en: 27 Noviembre 2014, 13:52 pm »

Prueba

Código:
ofstream ofile ("data2.txt", ofstream::out);

A ver que pasa


En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
novatus84

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Ayuda guardado de archivo
« Respuesta #2 en: 27 Noviembre 2014, 13:55 pm »

Gracias pero me sigue sin crear "data2.txt"
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda guardado de archivo
« Respuesta #3 en: 27 Noviembre 2014, 14:44 pm »

No da error ni nada?
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda guardado de archivo
« Respuesta #4 en: 27 Noviembre 2014, 14:46 pm »

A mi me lo crea perfectamente, compilando con -std=c++11.

Código:
ofstream ofile ("data2.txt", ofstream::out);

Ofstream viene con ios::out por defecto.
En línea

Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: Ayuda guardado de archivo
« Respuesta #5 en: 27 Noviembre 2014, 14:52 pm »

Una pregunta muy muy muy tonta...

Supongo que no tienes el fichero abierto, por ejemplo en Notepad o similar para hacer alguna comprobación anterior.

A veces cuestiones tremendamente "tontas" pasan

En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Ayuda guardado de archivo
« Respuesta #6 en: 27 Noviembre 2014, 15:10 pm »

solo un pequeño detalle tonto. No tiene nada que ver con la incidencia, pero aun así:

Esto:

Código
  1.    vector<string> text = load_vector(filename);
  2.    sort(text.begin(), text.end());
  3.    text.erase(unique(text.begin(), text.end()), text.end());

es equivalente a:

Código
  1. set<string> text = load_vector(filename);

O, si no quieres que load_vector devuelva un set:

Código
  1. vector<string> temp = load_vector(filename);
  2. set<string> text( temp.begin( ), temp.end( ) );

Esto es así porque std::set es un contenedor que:

* Mantiene sus elementos debidamente ordenados
* No admite duplicados

Matas 2 problemas de un plumazo.

Eso sí, dos cosas a tener en cuenta:

* std::set no tiene push_back, no tendría sentido. En su lugar hay que usar "insert".
* std::set no incorpora el operador de indización "[]", para acceder a sus elementos se puede hacer uso de bucles tipo:

Código
  1. for ( auto it = text.begin( ); it != text.end( ); ++it )
  2.  std::cout << *it << std::endl;

O si te gustan más, también lo puedes hacer con lambdas:

Código
  1. std::for_each( text.begin( ), text.end( ),
  2.               []( const std::string& str )
  3.               { std::cout << str << std::endl; } );



Y hablando ahora de tu problema... deberías asegurarte de que el archivo lo estás creando donde piensas. Prueba a poner la ruta completa. Puede ser que te esté intentando crear el archivo en otro directorio (el de trabajo, que no tiene que coincidir con el directorio donde se encuentra el ejecutable).
« Última modificación: 27 Noviembre 2014, 15:13 pm por eferion » En línea

novatus84

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Ayuda guardado de archivo
« Respuesta #7 en: 27 Noviembre 2014, 15:48 pm »

Perfecto mil gracias, he metido la ruta y ya me funciona, mil gracias!!



Otra cosilla, quitando los comentarios del tolower no doy con la forma de que me funcione antes de guardar el archivo....
« Última modificación: 27 Noviembre 2014, 17:57 pm por Eternal Idol » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda guardado de archivo
« Respuesta #8 en: 27 Noviembre 2014, 17:36 pm »

Puedes poner tolower(text[ i ]) directamente, sin locale.
En línea

novatus84

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Ayuda guardado de archivo
« Respuesta #9 en: 27 Noviembre 2014, 17:41 pm »

Si le quito el loc, me dice:  "no matching function for call to 'tolower'?
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema al Abrir el archivo guardado
.NET (C#, VB.NET, ASP)
Grugbel 3 6,250 Último mensaje 30 Junio 2009, 00:39 am
por h0oke
edit1 y guardado en archivo
Programación C/C++
rulovive 0 1,463 Último mensaje 13 Agosto 2011, 04:00 am
por rulovive
Recuperar archivo Excel guardado por error
Software
Ganejash 3 3,042 Último mensaje 22 Febrero 2013, 19:35 pm
por el-brujo
Implementar guardado de archivo (solucionado)
Java
do-while1 4 2,219 Último mensaje 24 Febrero 2015, 03:13 am
por Usuario Invitado
MOVIDO: Implementar guardado de archivo
Programación General
Eleкtro 0 1,394 Último mensaje 23 Febrero 2015, 20:32 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines