Oppure

Loading
19/03/10 20:08
xxmarco94
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):

#include <iostream>
#include <fstream>
#include <windows.h>

using namespace std;

int main (void) {
    string nome_file;
    
    cout<<"Nome del file: "<<endl; cin>>nome_file;
        
    ofstream f(nome_file, ios::out);
    
    f<<"Ciao come va?";
    
    f.close();
    
    fflush(stdin);
    cin.get();
    return 0;
    
}


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:
#include <iostream>
#include <fstream>
#include <windows.h>

using namespace std;

int main (void) {
    string nome_file;
    
    cout<<"Nome del file: "<<endl; cin>>nome_file;
    
    nome_file=nome_file+=".txt";
    
    ofstream f(nome_file, ios::out);
    
    f<<"Ciao come va?";
    
    f.close();
    
    fflush(stdin);
    cin.get();
    return 0;
    
}


Ma comunque non funziona.

Spero mi possiate aiutare.
aaa
19/03/10 20:42
nessuno
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à.
20/03/10 13:14
xxmarco94
ok li ho capito dove ho sbagliato ma però mi da errore sulla riga
ofstream f(nome_file, ios::out);

aaa
20/03/10 13:49
nessuno
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à.
20/03/10 14:04
xxmarco94
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>]
aaa
20/03/10 14:09
nessuno
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à.
20/03/10 14:42
xxmarco94
ok grazie ora provo in caso di problemi vi saprò dire
aaa
20/03/10 16:19
xxmarco94
e se io invecie dovessi aprire il file?
Dovrei scrivere:

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