Bonjour,

Mon probleme est assez simple, et pourtant je ne parviens pas a trouver de solutions sur le net: comment detecter les erreurs lors de l'ecriture d'un fichier avec ofstream, et notamment le fait que le disque soit plein?

J'ai essaye le code que l'on trouve dans la faq:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ofstream file( "fichier.txt" );
if ( !file )
{
    cerr << "Erreur de création\n";
    return;
}
 
file << "Une ligne\n";
if ( ! file )
{
    cerr << "Erreur d'écriture\n";
    return;
}
cout << "L'écriture a réussi\n";
mais l'erreur n'est pas detectee (mon disque est plein, j'ecris dans le fichier un string beaucoup plus gros, et l'ecriture a bien echoue puisque la taille de fichier.txt est nulle).

J'ai egalement teste:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
if ( ! (file << "Une ligne\n") )
ou encore:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ofstream file( "fichier.txt" );
file << "Une ligne\n";
if ( file.fail() || ! file.good() )
{
    cerr << "Erreur de création\n";
    return;
}
file.flush();
if ( file.fail() || ! file.good() )
{
    cerr << "Erreur de création\n";
    return;
}
file.close();
if ( file.fail() || ! file.good() )
{
    cerr << "Erreur de création\n";
    return;
}
cout << "L'écriture a réussi\n";
mais rien a faire, l'erreur d'ecriture n'est jamais detectee!

Est-ce que vous sauriez comment faire?

Merci d'avance,

Romain