Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. 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: 5704
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: 5704
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: 5704
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: 5704
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