Bonjour,
Je souhaiterais pouvoir écrire le contenue d'une variable dans un fichier texte qui serait contenu dans le répertoire de l'exécutable. Le problème est que le seul moyen que je connaisse afin de détecter le répertoire de l'exécutable implique d'inclure des librairies qui n'appartiennent pas à l'OS, donc je ne peux pas déboguer et je souhaite n'avoir qu'un seul code. Ce que j'ai donc fait c'est détecter l'OS actuel et selon le cas stocker le fichier texte dans tel ou tel répertoire. Je teste actuellement sous Windows mais le fichier texte ne s'écrit pas sur le disque...
Si quelqu'un voit le problème :
Merci de votre aide !
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 namespace { unsigned HowMany = 23456; unsigned BestScore = 0; void ReadScore() { #ifdef __linux ifstream fichier("/etc/opt/BestScore.txt", ios::in); // On ouvre le fichier en lecture pour Linux #elif _WIN64 || _WIN32 ifstream fichier("C:\BestScore.txt", ios::in); // On ouvre le fichier en lecture pour Windows #endif if (fichier) // Si l'ouverture a réussi { fichier >> BestScore; // On lit le contenu du fichier et on le stock fichier.close(); // On ferme le fichier } else // Sinon cerr << "Erreur à l'ouverture !" << endl; } void WriteScore() { #ifdef __linux ofstream fichier("/etc/opt/BestScore.txt", ios::out | ios::trunc); // Déclaration du flux et ouverture du fichier pour Linux #elif _WIN64 || _WIN32 ofstream fichier("C:\BestScore.txt", ios::out | ios::trunc); // Déclaration du flux et ouverture du fichier pour Windows #endif if (fichier) // Si l'ouverture a réussi { fichier << HowMany; // On écrit le contenu de la variable fichier.close(); // On referme le fichier } else // Si c'est la première ouverture du programme, on crée le fichier ou si il est inaccessible cerr << "Erreur à l'écriture !" << endl; fichier << 0; fichier.close(); // On referme le fichier } } // namespace
Partager