Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - aiuto creazione file con gli stream
Forum - C/C++ - aiuto creazione file con gli stream

Avatar
xxmarco94 (Normal User)
Rookie


Messaggi: 28
Iscritto: 07/02/2010

Segnala al moderatore
Postato alle 21:08
Venerdì, 19/03/2010
Ciao a tutti. Io vorrei creare un programma che crea un file il cui nome devo assegnare io da console. Praticamente io ho creato una variabile nome_file a cui poi assegno il nome che voglio dare al file. Il problema è che il compilatore mi da errore perchè l'estensione del file deve essere .txt.

Io ho provato a fare così (come suggeritomi da una lumo in chat):

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <fstream>
  3. #include <windows.h>
  4.  
  5. using namespace std;
  6.  
  7. int main (void) {
  8.     string nome_file;
  9.    
  10.     cout<<"Nome del file: "<<endl; cin>>nome_file;
  11.        
  12.     ofstream f(nome_file, ios::out);
  13.    
  14.     f<<"Ciao come va?";
  15.    
  16.     f.close();
  17.    
  18.     fflush(stdin);
  19.     cin.get();
  20.     return 0;
  21.    
  22. }



Però a scuola oggi il professore mi ha consigliato di assegnare alla variabile nome_file
il nome del file assieme alla sua estensione. Alla fine, come mi ha suggerito il prof, verrebbe una cosa come questa:
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <fstream>
  3. #include <windows.h>
  4.  
  5. using namespace std;
  6.  
  7. int main (void) {
  8.     string nome_file;
  9.    
  10.     cout<<"Nome del file: "<<endl; cin>>nome_file;
  11.    
  12.     nome_file=nome_file+=".txt";
  13.    
  14.     ofstream f(nome_file, ios::out);
  15.    
  16.     f<<"Ciao come va?";
  17.    
  18.     f.close();
  19.    
  20.     fflush(stdin);
  21.     cin.get();
  22.     return 0;
  23.    
  24. }



Ma comunque non funziona.

Spero mi possiate aiutare.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:42
Venerdì, 19/03/2010
Questa riga

    nome_file=nome_file+=".txt";

dovrebbe essere

    nome_file = nome_file + ".txt";


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
xxmarco94 (Normal User)
Rookie


Messaggi: 28
Iscritto: 07/02/2010

Segnala al moderatore
Postato alle 14:14
Sabato, 20/03/2010
ok li ho capito dove ho sbagliato ma però mi da errore sulla riga
Codice sorgente - presumibilmente Plain Text

  1. ofstream f(nome_file, ios::out);



PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:49
Sabato, 20/03/2010
Quale errore ? Devi fornire sempre i dettagli in un form altrimenti come si fa a rispondere?


P.S. "ma però" non va bene ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
xxmarco94 (Normal User)
Rookie


Messaggi: 28
Iscritto: 07/02/2010

Segnala al moderatore
Postato alle 15:04
Sabato, 20/03/2010
ok scusate ora vi dico che errore mi da (scusate anche il ma però, non vado molto bene in italiano)

Mi dice:

no matching function for call to `std::basic_ofstream<char, std::char_traits<char> >::basic_ofstream(std::string&, const std::_Ios_Openmode&)'

e poi mi da i vari candidati:

std::basic_ofstream<char, std::char_traits<char> >::basic_ofstream(const std::basic_ofstream<char, std::char_traits<char> >&)

std::basic_ofstream<_CharT, _Traits>::basic_ofstream(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]

std::basic_ofstream<_CharT, _Traits>::basic_ofstream() [with _CharT = char, _Traits = std::char_traits<char>]

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 15:09
Sabato, 20/03/2010
Manca l'include

#include <string>

e devi correggere la riga così

ofstream f(nome_file.c_str(), ios::out);


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
xxmarco94 (Normal User)
Rookie


Messaggi: 28
Iscritto: 07/02/2010

Segnala al moderatore
Postato alle 15:42
Sabato, 20/03/2010
ok grazie ora provo in caso di problemi vi saprò dire

PM Quote
Avatar
xxmarco94 (Normal User)
Rookie


Messaggi: 28
Iscritto: 07/02/2010

Segnala al moderatore
Postato alle 17:19
Sabato, 20/03/2010
e se io invecie dovessi aprire il file?
Dovrei scrivere:

Codice sorgente - presumibilmente Plain Text

  1. ifstream f(nome_file.c_std(), ios::out);

?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:18
Sabato, 20/03/2010
c_str non c_std

e ovviamente se leggi non può essere

ios::out



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote