Remplacer un fichier par un autre =)

Messages postés
6
Date d'inscription
dimanche 29 septembre 2019
Statut
Membre
Dernière intervention
17 octobre 2019
-
Bonjour,

Je suis en train de coder une application pas très compliquée. Mais je suis à un moment où j'ai besoin de remplacer un
.ini
par un autre.

Je voudrais savoir si quelqu'un pourrais m'aider car je n'ai aucune idée de quelle "code" je dois mettre pour cela.

Merci d'avance :)
Afficher la suite 

2 réponses

Messages postés
29052
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 novembre 2019
6688
0
Merci
Bonjour,

En C++, pour écrire un fichier texte quelconque (pas forcément
.ini
), on utilise la classe
std::ofstream
du C++.

#include <iostream>
#include <fstream>

int main() {
    std::string filename("/tmp/toto.ini");
    std::ofstream ofs(filename);

    if (ofs) {
        ofs << "coucou" << std::endl
            << "hello" << std::endl;
        ofs.close();
    } else {
        std::cerr << "Cannot write " << filename << std::endl;
        return 1;
    }

    return 0;
}


Note que tu peux ouvrir le flux en écriture pour écrire :
  • "à la place" de l'ancien contenu du fichier (mode
    std::ofstream::out
    , le mode par défaut
  • "à la suite" (mode
    std::ofstream::app
    , pour "append").


Pour plus de détails, voir la documentation.

Bonne chance
Commenter la réponse de mamiemando
Messages postés
5262
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
5 novembre 2019
817
0
Merci
Salut Niwless,

Sous Windows un fichier .ini est un simple fichier texte qui peut contenir des paramètres utiles à une application. Du temps des systèmes 16bits (pré Windows95) le registre n'existait pas, et c'est ainsi que les paramètres étaient stockés (dans un fichier win.ini pour le système et dans un fichier au nom choisi par le développeur pour les paramètres privés particuliers à son propre programme).

Un fichier 36264335.ini peut, par exemple, se présenter sous la forme suivante :

[SECTION1]
CLEF1=VALEUR1


Comme le dit mamiemando, vu qu'il s'agit d'un simple fichier texte, rien ne t’empêche d'utiliser de simples fonctions standard du C++ pour créer un fichier avec ce contenu.

Les fichiers .ini peuvent toutefois toujours être gérés par des applications avec l'API win32.

Concrètement, pour créer un fichier tel que celui-ci avec les fonctions de l'API Windows, tu peux écrire le programme suivant :


#include <stdio.h>
#include <windows.h>

#define MY_INI_FILE "C:\\Chemin\\vers\\mon_fichier\\36264335.ini"

int main(void) {
 if (!WritePrivateProfileStringA("SECTION1", "CLEF1", "VALEUR1", MY_INI_FILE)) {
  printf("Erreur %lu\n", GetLastError());
 }
 
 return 0;
}

Le fonctionnement de la fonction est décrit là : https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-writeprivateprofilestringa

Si le fichier .ini n'existe pas dans le répertoire mentionné, il est créé. S'il existe mais que la section n'existe pas, elle est créée et la clef et sa valeur aussi. Si le fichier existe, ainsi que la section, et la clef, la valeur de la clef est mise à jour, etc. (ce n'est qu'un aperçu des possibilités, vois la doc pour une description complète).

Tu peux appeler cette fonction successivement avec des valeurs différentes pour créer différentes sections, clefs et valeurs.

C'est la façon la plus basique de faire.

Tu peux aussi utiliser d'autres fonctions de la même famille WritePrivateProfileXXXX qui te permettent de faire des opérations plus complexes et optimisant mieux les appels système si tu as de nombreuses données à stocker, vois la doc Microsoft.

Note que ces fonctions sont maintenues par Microsoft pour assurer la compatibilité ascendante de fonctionnement d'anciens programmes. Microsoft décourage ce mode de stockage des paramètres des applications, car il a été rendu obsolète par le registre Windows.


Dal
Commenter la réponse de [Dal]