Ecriture et lecture d'un fichier texte Linux/Windows
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 :
Code:
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 |
Merci de votre aide !