Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    [c++] cambiare nome file creato in runtime...

    codice:
    string puntivolutistring=intToString(puntivoluti);
    
    ofstream fout;
    fout.open("RITARDI-X-PUNTI-"+puntivolutistring+".txt", ios::app);
    Così mi da errore...

    Come posso rimediarvi?


    thanks


  2. #2
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Beh dato che stai usando il c++ la cosa più facile è usare una stringstream per costruire il percorso:

    codice:
    #include <sstream>
    
    string crea_indirizzo(string puntivolutiString)
    {
        stringstream ss(stringstream::in | stringstream::out);
    
        ss << "RITARDI-X-PUNTI-";
        ss << puntivolutistring;
        ss << ".txt"
    
        return ss.str();
    }
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  3. #3
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    ho provato così...

    Originariamente inviato da Ippo343
    Beh dato che stai usando il c++ la cosa più facile è usare una stringstream per costruire il percorso:

    codice:
    #include <sstream>
    
    string crea_indirizzo(string puntivolutiString)
    {
        stringstream ss(stringstream::in | stringstream::out);
    
        ss << "RITARDI-X-PUNTI-";
        ss << puntivolutistring;
        ss << ".txt"
    
        return ss.str();
    }


    codice:
    string nomefile = crea_indirizzo(puntivoluti);
    
    ofstream fout;
    fout.open(nomefile, ios::app);
    dopo aver inizializzato la funzione prima dell int main... con:

    codice:
     string crea_indirizzo(int value)
    {
        stringstream ss(stringstream::in | stringstream::out);
    
        ss << "RITARDI-X-PUNTI-";
        ss << value;
        ss << ".txt";
    
        return ss.str();
    }
    ma in fase di compilazione mi da il seguente errore:

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



    grazie!


  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    ofstream:pen() vuole un const char* come primo argomento. Per cui:

    codice:
    fout.open(nomefile.c_str(), ios::app);
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  5. #5

    Re: [c++] cambiare nome file creato in runtime...

    Originariamente inviato da freetom
    codice:
    string puntivolutistring=intToString(puntivoluti);
    
    ofstream fout;
    fout.open("RITARDI-X-PUNTI-"+puntivolutistring+".txt", ios::app);
    Così mi da errore...

    Come posso rimediarvi?


    thanks

    cmq modificando
    codice:
    fout.open("RITARDI-X-PUNTI-"+puntivolutistring+".txt", ios::app);
    in
    codice:
    fout.open("RITARDI-X-PUNTI-"+puntivolutistring.c_str()+".txt", ios::app);
    risolvevi lo stesso

  6. #6

    Re: Re: [c++] cambiare nome file creato in runtime...

    Originariamente inviato da lolide
    cmq modificando
    codice:
    fout.open("RITARDI-X-PUNTI-"+puntivolutistring+".txt", ios::app);
    in
    codice:
    fout.open("RITARDI-X-PUNTI-"+puntivolutistring.c_str()+".txt", ios::app);
    risolvevi lo stesso
    No; con la tua modifica tutti i pezzi sarebbero risultati dei const char *, che non si possono sommare. Semmai:
    codice:
    fout.open((string("RITARDI-X-PUNTI-")+puntivolutistring+".txt").c_str());
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.