Ce n'ifstream::rdbuf ()?

J'ai le code suivant et ça marche plutôt bien (autre que le fait qu'il est assez lent, mais je n'aime pas beaucoup parler). Il ne me semble pas des plus intuitives que ce serait d'écrire la totalité du contenu de la infile à la outfile.

//Returns 1 if failed and 0 if successful
int WriteFileContentsToNewFile(string inFilename, string outFilename)
{
    ifstream infile(inFilename.c_str(), ios::binary);
    ofstream outfile(outFilename.c_str(), ios::binary);

    if( infile.is_open() && outfile.is_open() && infile.good() && outfile.good() )
    {
        outfile << infile.rdbuf();

        outfile.close();
        infile.close();
    }
    else
        return 1;

    return 0;
}

Toute idée?

Je voudrais ajouter que les appels explicites à close() ne sont pas nécessaires. Les destructeurs ferait la même chose de toute façon. Et qui permet d'économiser quelques lignes. 😉

OriginalL'auteur Brian T Hannan | 2010-01-26