IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Problème et AVC : _wfopen_s


Sujet :

C++

  1. #1181
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 782
    Par défaut
    Au soir, je regard l'ordi ou la télé : Netflix et Disney+ !!!

    Non !!!

    C'est un clone du projet "You" ???
    Oui, mais longtemps !

    Pourquoi le nombre de "-" dans le nom du projet augmente régulièrement ???
    C'est quoi son rôle, à part dupliquer le code et rendre la maintenance des différents projets
    Ben oui !!!

    Après, mais (Exemple) :
    you /t s "e:\Séries.[]\1883.[2021- Paramount+]"
    you /t s "e:\Séries.[]\Yellowstone.[2018-2024]"
    you /t s "e:\Séries.[]\+++\R\Resident Alien.[2021-]"
    you /t s "e:\Séries.[]\Will Trent.[2023-]"
    Etc...
    Alors... ??? Oui ou non ?
    Exemple et Will Trent.[2023-], etc...

  2. #1182
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 428
    Par défaut
    you /t s "e:\Séries.[]\1883.[2021- Paramount+]"
    you /t s "e:\Séries.[]\Yellowstone.[2018-2024]"
    you /t s "e:\Séries.[]\+++\R\Resident Alien.[2021-]"
    you /t s "e:\Séries.[]\Will Trent.[2023-]"
    Etc...
    Alors... ??? Oui ou non ?
    Oui ou non ? Quoi, quel est la question ?

    Exemple et Will Trent.[2023-], etc...
    Quel est la question ?

    Pourquoi ce n'est pas dans GitHub ???

  3. #1183
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 782
    Par défaut
    https://github.com/laurentbouleau/Exemple : Mars 15 (27/03/2025)

    Exemple : serie.cpp :
    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
    std::wstring Serie::format_Annees() const
    {
        if (m_f_anneesProduction.first && m_f_anneesProduction.second)
        {
            return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-' + m_valuesColor + std::to_wstring(m_f_anneesProduction.second.value());
        }
        else if (m_f_anneesProduction.first)
        {
            return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-';
        }
        else
        {
            std::pair<int, int> anneesDiffusion = calculer_Annees_Diffusion();
            return std::to_wstring(anneesDiffusion.first) + m_keyColor[1] + L'-' + m_valuesColor + std::to_wstring(anneesDiffusion.second);
        }
    }
    Kaleidoscope.[2023 Netflix] ???
    1883.[2021 Paramount+] ???

    ---------------------------------------------------------
    Oui ou non ? Quoi, quel est la question ?
    et
    Quel est la question ?
    Ok :
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
        std::wstring t;
        const wchar_t* p{ L".\\Exemple.txt" };
        std::filesystem::path filePath(p);
        try
        {
            t = lire_fichierTxt(filePath);
        }
        catch (runtime_error const& exception)
        {
            std::wcout << L"Erreur : " << exception.what() << std::endl;
        }
     
        AffichagePersonnalisation person = getCurrentAffichagePersonnalisation();//fonction à implémenter pour récupérer la configuration de personnalisation de l'utilisateur.
     
        //std::list<std::wstring> racines{
        const std::vector<std::wstring> racines{
                                            L"L'Attaque des Titans.[2013- Crunchyroll].Manga",
                                            L"Azertyuiop £££.[2024-].Mini-série",
     
                                            L"Kaleidoscope.[2023 Netflix]",
                                            L"Seven Deadly Sins- Four Knights of the Apocalypse.[2023-].Manga",
                                            L"Dr. STONE.[2019- Crunchyroll].Manga",
                                            L"Andor.[2022- Disney+]",
                                            L"Star Wars Rebels.[2014-2017 Disney+].Animation",
                                            L"Star Wars- The Clone wars.[2008-2020 Disney+].Animation",
                                            L"Shogun.[2024- Disney+]",
                                            L"Love, Death + Robots.[2019- Netflix].Animation",
                                            L"1883.[2021 Paramount+]",
     
                                            L"Avatar 2 - la voie de l'eau.(2022-12-14)",
                                            L"Kingsglaive- Final Fantasy XV.(2016-08-30 VOD).Animation",
                                            L"Prey.(2022-08-05 Disney+)",
                                            L"Sous la Seine.(2024-06-05 Netflix)",
                                            L"Star Wars - Episode VII - Le réveil de la force.(2015-12-16)",
                                            L"Star Wars- The Clone Wars.(2008-08-27).Animation",
                                            L"Saison.txt"
        };
        //auto racine = racines[0];
        //auto racine = racines[1];
        //auto racine = racines[2];
        //auto racine = racines[3];
        //auto racine = racines[4];
        //auto racine = racines[6];
        //auto racine = racines[9];     
        auto racine = racines[10];
     
        //auto racine = racines[11];
        //auto racine = racines[16];
    if(racine == racines[10])
    {
     
        std::wcout << L"racine=[" << racine << L']' << std::endl;
        fs::path r = t + racine;
    }
    else
    {
    // Ici avec : 
    // you /t s "e:\Séries.[]\Overlord.[2015-].Manga"
    // ou
    // you /t s "e:\Séries.[]\Yellowstone.[2018-2024]"
    // Comment faire ???
    }
        auto nomDossier = r.filename().wstring();
        assert(nomDossier.length() > 0 && L"Nom de dossier vide");
    ...
    Ok ???

    ---------------------------------------------
    Pourquoi ce n'est pas dans GitHub ???
    Je suis crevé !!!
    Demain...

  4. #1184
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 428
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::wstring Serie::format_Annees() const
    {...}
    C'est quoi votre question, SVP ?

    C'est le fait d'avoir qu'une année pour une série ?
    C'est le format de la chaine de caractère affichée quand on a que l'année de début ?
    Autre chose ?

    Si c'est juste le cas d'une seule année, il faut que vous soyez explicite sur comment cela est indiqué dans les sources de données.
    Si on fait l'assertion que c'est un titre avec une partie "...[xxxx ...]" et pas "...[xxxx -...]", c'est qu'il faut revoir comment est remplit le champ "m_f_anneesProduction".
    C'est dans le constructeur de Serie :
    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
    Serie::Serie(std::filesystem::path racine)
    {
        this->racine = racine;
        auto nomDossier = racine.filename().wstring();
        assert(nomDossier.length() > 0 && L"Nom de dossier vide");
    
        std::wregex filename_pattern{ L"^(.+?)(?:\\.\\[(\\d{4}\\-\\d{4}\\s|\\d{4}\\-\\d{4}|\\d{4}\\-\\s|\\d{4}\\s|\\d{4})([^\\]]*)\\])(?:\\.(.+))?$|^(.+)(?:\\.(.+))$" };
        std::wsmatch match;
        if (std::regex_match(nomDossier, match, filename_pattern))
        {
            std::wstring titres = match[1];
            m_titres = extraire_Titres_Depuis_NomDeFichierOuDeRepertoire(titres);
            if (match[2].matched)
            {
                std::wstring annees_str = match[2].str();
                std::wsmatch dummy;
                if (std::regex_match(annees_str, dummy, std::wregex(L"\\d{4}\\-\\d{4}\\s?")))
                {
                    m_f_anneesProduction.first = stoi(annees_str);
                    m_f_anneesProduction.second = stoi(annees_str.substr(5));
                }
                else
                {
                    m_f_anneesProduction.first = stoi(annees_str);
                }
            }
    
            m_sur = (match[3].matched) ? match[3].str() : L"";
            m_sous_genre = (match[4].matched) ? match[4].str() : L"";
        }
        else
        {
            assert(false == true && "Le nom du répertoire n'est pas un nom valide.");
        }
    }
    Vous devriez être capable de changé un peu ce code pour qu'il corresponde à vos attentes.

    Ok ???
    QU'est-ce qui vous manque pour faire ce que vous voulez faire ?
    Mais encore plus précisément, qu'est-ce que vous vous voulez faire.

  5. #1185
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 782
    Par défaut
    https://github.com/laurentbouleau/Exemple : Mars 16 (28/03/2025)

    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
    Serie::Serie(std::filesystem::path racine)
    {
        this->racine = racine;
        auto nomDossier = racine.filename().wstring();
        assert(nomDossier.length() > 0 && L"Nom de dossier vide");
     
        std::wregex filename_pattern{ L"^(.+?)(?:\\.\\[(\\d{4}\\-\\d{4}\\s|\\d{4}\\-\\d{4}|\\d{4}\\-\\s|\\d{4}\\s|\\d{4})([^\\]]*)\\])(?:\\.(.+))?$|^(.+)(?:\\.(.+))$" };
        std::wsmatch match;
        if (std::regex_match(nomDossier, match, filename_pattern))
        {
            std::wstring titres = match[1];
            m_titres = extraire_Titres_Depuis_NomDeFichierOuDeRepertoire(titres);
            if (match[2].matched)
            {
                std::wstring annees_str = match[2].str();
                std::wsmatch dummy;
                if (std::regex_match(annees_str, dummy, std::wregex(L"\\d{4}\\s?")))
                {
                    m_f_anneesProduction.first = stoi(annees_str);
                }
                else if(std::regex_match(annees_str, dummy, std::wregex(L"\\d{4}\\-\\d{4}\\s?")))
                {
                    m_f_anneesProduction.first = stoi(annees_str);
                    m_f_anneesProduction.second = stoi(annees_str.substr(5));
                }
                else
                {
                    m_f_anneesProduction.first = stoi(annees_str);
                }
            }
     
            m_sur = (match[3].matched) ? match[3].str() : L"";
            m_sous_genre = (match[4].matched) ? match[4].str() : L"";
        }
        else
        {
            assert(false == true && "Le nom du répertoire n'est pas un nom valide.");
        }
    }
    Ok ! Exemple : 1883.[2021 Paramount+], Love, Death + Robots.[2019- Netflix].Animation et Star Wars Rebels.[2014-2017 Disney+].Animation !!!

    Et :
    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
    std::wstring Serie::format_Annees() const
    {
        if (m_f_anneesProduction.first && m_f_anneesProduction.second)
        {
            return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-' + m_valuesColor + std::to_wstring(m_f_anneesProduction.second.value());
        }
        else if (m_f_anneesProduction.first && !(m_f_anneesProduction.second))
        {
            return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value());// +m_keyColor[1] + L'-';
        }
        else if (m_f_anneesProduction.first)
        {
            return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-';
        }
        else
        {
            std::pair<int, int> anneesDiffusion = calculer_Annees_Diffusion();
            return std::to_wstring(anneesDiffusion.first) + m_keyColor[1] + L'-' + m_valuesColor + std::to_wstring(anneesDiffusion.second);
        }
    }
    Nom : Capture d’écran 2025-03-28 125313.png
Affichages : 147
Taille : 5,6 Ko
    Problème !!!

    -----------------------------------------------

    QU'est-ce qui vous manque pour faire ce que vous voulez faire ?
    Mais encore plus précisément, qu'est-ce que vous vous voulez faire.
    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
        const std::vector<std::wstring> racines{
                                            L"L'Attaque des Titans.[2013- Crunchyroll].Manga",
                                            L"Azertyuiop £££.[2024-].Mini-série",
     
                                            L"Kaleidoscope.[2023 Netflix]",
                                            L"Seven Deadly Sins- Four Knights of the Apocalypse.[2023-].Manga",
                                            L"Dr. STONE.[2019- Crunchyroll].Manga",
                                            L"Andor.[2022- Disney+]",
                                            L"Star Wars Rebels.[2014-2017 Disney+].Animation",
                                            L"Star Wars- The Clone wars.[2008-2020 Disney+].Animation",
                                            L"Shogun.[2024- Disney+]",
                                            L"Love, Death + Robots.[2019- Netflix].Animation",
                                            L"1883.[2021 Paramount+]",
     
                                            L"Avatar 2 - la voie de l'eau.(2022-12-14)",
                                            L"Kingsglaive- Final Fantasy XV.(2016-08-30 VOD).Animation",
                                            L"Prey.(2022-08-05 Disney+)",
                                            L"Sous la Seine.(2024-06-05 Netflix)",
                                            L"Star Wars - Episode VII - Le réveil de la force.(2015-12-16)",
                                            L"Star Wars- The Clone Wars.(2008-08-27).Animation",
                                            L"Saison.txt"
        };
    avec !!!

    Et else comme :
    You /t s "e:/Séries.[]/++++/T/The Walking Dead.[2010-2022]"
    you /t s "e:\Séries.[]\++++\B\Breaking Bad.[2008-2013]"
    you /t s "e:\Séries.[]\++++\B/Better Call Saul.[2015-2022]"
    you /t s "e:\Séries.[]\++++\A\Andor.[2022- Disney+]"
    ...
    https://zestedesavoir.com/tutoriels/...-mes-fichiers/ : Je vais faire !!!

    Attention :
    Nom : Capture d’écran 2025-03-28 131342.png
Affichages : 144
Taille : 54,2 Ko
    Ok !!!
    else et you /t s "e:\\Séries.[]\++++\G\GiriHaji.[20219].Mini.série"
    Comme faire ???

  6. #1186
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 428
    Par défaut
    Ça vient.
    Il faut juste être un peu plus 'planificateur".

    J'espère que vous avez déjà saisi que la "Vie" des objets comme ceux de la classe Serie est en 2/3 parties/étapes.
    - On commence par sa construction, via son constructeur, en lui donnant le chemin "racine" qui contient l'ensemble des données liées à l'objet, par exemple les fichiers et répertoires contenant les informations d'une Serie pour un objet "Serie". (C'est la couche Data)
    On utilise des fonctions qui modifie les champs de l'objet en fonction des fichiers trouvés et de leur contenu. (C'est encore la couche Data)
    A terme, toutes ces fonctions devront être directement appelées par le constructeur => la couche Data ne sera plus que le constructeur. (et, à terme, externalisé de la classe)

    - Après construction, on a toutes les informations venant des fichiers stockées dans les champs de l'objet(couche Data), on peut donc maintenant appliquer simplement les règles métier, car on a justement accès à toutes les informations.
    C'est la couche Metier, qui, pour un objet Serie, se résume à la fonction "PostTraitement".

    - Après l'application des règles Métier, il y a l'affichage de de cet objet "Serie" dans la console.
    Chose que je vous enjoins de ne pas faire depuis très longtemps dans cette classe (Couche IHM).
    C'est, pour l'objet de type Serie, les fonctions "Print_XXX".

    Je signale ces étapes, car vos modifications proposées interviennent à 2 étapes radicalement différentes.
    "Serie::Serie(std::filesystem::path racine)" est LA fonction de l'étape 1.
    "Serie::format_Annees() const" est une fonction de l'étape 3.

    Il faut que les fonctions de l'étape 1 stockent des informations "pertinentes" dans l'objet.
    Il faut que les fonctions de l'étape 3 mettent en forme les informations stockées dans l'objet pour les rendre affichable dans la console.
    Les fonctions de l'étape 2 vont déduire d'autres informations, ou "corriger" les informations.

    Je ne sais pas ce que vous cherchez à faire précisément.
    Mais il y a 2 "problèmes" distinctes :
    - Pourvoir distinguer entre "...[2021 ...]" (une série qui n'a qu'une saison, en 2021) et "...[2021- ...]" (une série non achevée avec une première saison 2021).
    - Pouvoir afficher différemment les 2 cas précédents ("...[2021 ...]" VS "...[2021- ...]"

    Pour la première problématique (distinguer les cas), je propose de stocker dans le champ "m_f_anneesProduction" de l'objet la même année de fin que l'année de début quand la série n'a durée qu'une saison.
    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
    Serie::Serie(std::filesystem::path racine)
    {
        this->racine = racine;
        auto nomDossier = racine.filename().wstring();
        assert(nomDossier.length() > 0 && L"Nom de dossier vide");
     
        std::wregex filename_pattern{ L"^(.+?)(?:\\.\\[(\\d{4}\\-\\d{4}\\s|\\d{4}\\-\\d{4}|\\d{4}\\-\\s|\\d{4}\\s|\\d{4})([^\\]]*)\\])(?:\\.(.+))?$|^(.+)(?:\\.(.+))$" };
        std::wsmatch match;
        if (std::regex_match(nomDossier, match, filename_pattern))
        {
            std::wstring titres = match[1];
            m_titres = extraire_Titres_Depuis_NomDeFichierOuDeRepertoire(titres);
            if (match[2].matched)
            {
                std::wstring annees_str = match[2].str();
                std::wsmatch dummy;
                if(std::regex_match(annees_str, dummy, std::wregex(L"\\d{4}\\-\\d{4}\\s?")))
                {
                    m_f_anneesProduction.first = stoi(annees_str);
                    m_f_anneesProduction.second = stoi(annees_str.substr(5));
                }
                else if (std::regex_match(annees_str, dummy, std::wregex(L"\\d{4}\\s?")))
                {
                    m_f_anneesProduction.first = stoi(annees_str);
                    m_f_anneesProduction.second = stoi(annees_str);
                }
                else 
                {
                    m_f_anneesProduction.first = stoi(annees_str);
                }
            }
     
            m_sur = (match[3].matched) ? match[3].str() : L"";
            m_sous_genre = (match[4].matched) ? match[4].str() : L"";
        }
        else
        {
            assert(false == true && "Le nom du répertoire n'est pas un nom valide.");
        }
    }
    J'ai changé l'ordre des if car il vaut mieux, dans ces cas d'analyses de texte, aller du plus "spécifique"(long/complexe) aux moins "spécifique".
    Donc l'information que la série est finie est bien stockée dans l'objet Serie.
    (On peut aussi changer l'expression régulière pour quelle reflète plus explicitement ces cas distincts.)

    EDIT :
    Pour la seconde problématique (affichage du cas Serie "mono année"), il faut savoir si et comment vous voulez afficher cette information, par exemple en n'affichant que l'année, sans le "-" superfétatoire (partie en rouge dans le code) :
    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
    std::wstring Serie::format_Annees() const
    {
        if (m_f_anneesProduction.first && m_f_anneesProduction.second)
        {
            if(m_f_anneesProduction.first == m_f_anneesProduction.second)
            {
                return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value());
            }
            else
            {
                return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-' + m_valuesColor + std::to_wstring(m_f_anneesProduction.second.value());
            }
        }
        else if (m_f_anneesProduction.first && !(m_f_anneesProduction.second))
        {
            return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value());// +m_keyColor[1] + L'-';
        }
        else if (m_f_anneesProduction.first)
        {
            return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-';
        }
        else
        {
            std::pair<int, int> anneesDiffusion = calculer_Annees_Diffusion();
            return std::to_wstring(anneesDiffusion.first) + m_keyColor[1] + L'-' + m_valuesColor + std::to_wstring(anneesDiffusion.second);
        }
    }
    La partie en vert du code précédent est du "code mort", car il est impossible qu'il s'exécute car la condition sera toujours fausse.

    Nom : capture-d-ecran-2025-03-28-125313.png
Affichages : 107
Taille : 5,6 Ko
    Problème !!!
    C'est quoi le problème ?
    C'est vous qui avez décidé de ne pas afficher de "-" dans ce cas de Serie "inachevée" avec votre mise en commentaire à la fin de cette ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value());// +m_keyColor[1] + L'-';
    "(m_f_anneesProduction.second)" est à false/faux car vous n'avez pas d'année de fin de production indiquée dans le nom du répertoire, donc inachevée, non ?
    "Love, Death + Robots.[2019- Netflix].Animation" : Série donc la production commence en 2019 mais qui est toujours en production
    "Love, Death + Robots.[2019 Netflix].Animation" : Série donc la production n'a duré qu'un an : 2019
    Ceci est la manière dont on interprète les données en entrée, mais l'affichage peut (et est) différent, car les données peuvent venir d'ailleurs (d'autres fichiers, de règles métier, etc...).
    Vous devez vous poser des question sur "comment j'affiche les données" qui ne correspondent pas à "comment j'ai encodé dans des noms de fichiers et de répertoire à la con ces informations".
    Vous devez scinder la logique de la 1ère étape, de la seconde étape, et de la 3 étapes pour pouvoir "modulariser" votre code.

    const std::vector<std::wstring> racines{
    Je ne comprends toujours pas pourquoi vous avez toujours cette initialisation de la variable "racine" avec ces valeurs en dur à la con, quand je vous aie déjà donné il y a plus de 2 mois et demi de quoi remplir automatiquement et de manière récursive cette variable :
    https://www.developpez.net/forums/d2.../#post12064499

    You /t s "e:/Séries.[]/++++/T/The Walking Dead.[2010-2022]"
    you /t s "e:\Séries.[]\++++\B\Breaking Bad.[2008-2013]"
    you /t s "e:\Séries.[]\++++\B/Better Call Saul.[2015-2022]"
    you /t s "e:\Séries.[]\++++\A\Andor.[2022- Disney+]"
    Pourquoi vous me reparlez du projet "You" qui n'a pas changé depuis 1 an et qui ne se base pas du tout sur la même manière de fournir les "racines" des données.
    Pour "You", vous spécifiez la seule "racine" possible dans la ligne de commande et vous pouvez interagir "dynamiquement" avec la console.
    Pour le projet "Exemple", le fichier "Exemple.txt" contient la liste des racines distinctes. (Et en implémentant mes remarques d'il y a plus de 2 mois on pourrait "traiter" un nombre arbitraire de Serie/Film en un "coup".)
    Exemple ne fait qu'afficher les Serie et Film dont les données sont dans l'une des racines données dans "Exemple.txt".

    Alors, pourquoi ces questions sur le projet "You" alors que vous n'implémentez pas mes remarques de plus de 2 mois dans le projet "Exemple" et qui permettrait de ne pas galérer avec vos listes en dur de malade ?

    Vous allez faire quoi ???
    Il me semble que tout dont vous avez besoin sur le sujet est déjà implémenté dans les fonctions type "lire_fichierTxt", non ?
    Nom : capture-d-ecran-2025-03-28-131342.png
Affichages : 110
Taille : 54,2 Ko
    Ce que vous me montrez, c'est des traces d'utilisation d'une console pour lancer un peu tout et surtout n'importe quoi.
    Depuis le début, je vous dit d'utiliser le débugueur, donc de lancer le programme depuis Visual Studio, pas de puis une console, BORDEL.
    Avant de vous envolez, DEBOGUEZ votre programme.
    Et on débogue en "debug", pas en "Release".
    Vous ne devriez pas vous baladez dans les répertoires "Release" avant d'avoir compris bien des choses.
    Il faut que votre programme soit "au point" avant de tester le moindre "Release".

    Ok !!!
    else et you /t s "e:\\Séries.[]\++++\G\GiriHaji.[20219].Mini.série"
    Comme faire ???
    COMMENT FAIRE QUOII ?!?!
    Prenez au moins un peu de temps pour rédiger des questions.

    Parce que "Comment faire" sur un truc qui, il me semble, on a déjà répondu il y a plus de 2 mois, c'est agaçant.

  7. #1187
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 782
    Par défaut
    https://github.com/laurentbouleau/Exemple : Mars 17 (28/03/2025)
    Star Wars Rebels.[2014-2017 Disney+].Animation : ok !
    Love, Death + Robots.[2019- Netflix].Animation : ok !
    1883.[2021 Paramount+] : ok !

    Et :
    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
    std::wstring Serie::format_Annees() const
    {
        if (m_f_anneesProduction.first && m_f_anneesProduction.second && m_f_anneesProduction.first != m_f_anneesProduction.second)
        {
            std::pair<int, int> anneesDiffusion = calculer_Annees_Diffusion();
            return std::to_wstring(anneesDiffusion.first) + m_keyColor[1] + L'-' + m_valuesColor + std::to_wstring(anneesDiffusion.second);
        }
        else if (m_f_anneesProduction.first && m_f_anneesProduction.second)
        {
            return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value());// +m_keyColor[1] + L'-';
        }
        else if (m_f_anneesProduction.first)
        {
            return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-';
        }
        /*else
        {
        }*/
    }
    Ok !

    Maintenant :
    You /t s "e:/Séries.[]/++++/T/The Walking Dead.[2010-2022]"
    you /t s "e:\Séries.[]\++++\B\Breaking Bad.[2008-2013]"
    you /t s "e:\Séries.[]\++++\B/Better Call Saul.[2015-2022]"
    you /t s "e:\Séries.[]\++++\A\Andor.[2022- Disney+]"
    You ===> Exemple

  8. #1188
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 782
    Par défaut
    Ah ! Mince !!!

  9. #1189
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 782
    Par défaut
    https://github.com/laurentbouleau/Exemple : Mars 18 (29/03/2025)
    Star Wars Rebels.[2014-2017 Disney+].Animation : ok !
    Love, Death + Robots.[2019- Netflix].Animation : ok !
    1883.[2021 Paramount+] : ok !

    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
    std::wstring Serie::format_Annees() const
    {
        if (m_f_anneesProduction.first && m_f_anneesProduction.second)
        {
            if (m_f_anneesProduction.first == m_f_anneesProduction.second)
            {
                return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value());
            }
            else
            {
                return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-' + m_valuesColor + std::to_wstring(m_f_anneesProduction.second.value());
            }
        }
        else if (m_f_anneesProduction.first && !(m_f_anneesProduction.second))
        {
            return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-';
        }
        /*else if (m_f_anneesProduction.first)
        {                                                                           // Ok !
            return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-';
        }*/
        else
        {
            std::pair<int, int> anneesDiffusion = calculer_Annees_Diffusion();
            return std::to_wstring(anneesDiffusion.first) + m_keyColor[1] + L'-' + m_valuesColor + std::to_wstring(anneesDiffusion.second);
        }
    }
    Maintenant ou plus tard : You ===> Exemple : else et https://zestedesavoir.com/tutoriels/...-mes-fichiers/ : std::cin !

  10. #1190
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 428
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    std::wstring Serie::format_Annees() const
    {
        if (m_f_anneesProduction.first && m_f_anneesProduction.second)
        {
            if (m_f_anneesProduction.first == m_f_anneesProduction.second)
    La 2ème version est plus "logique", mais comme il me semble que c'est la version que j'ai donnée, je ne sais pas si vous avez bien compris le raisonnement.

    Il y a un truc qui n'est pas forcément très clair avec ce code.
    "m_f_anneesProduction.first" et "m_f_anneesProduction.second" sont des "std::optional<int>".
    C'est des entiers "optionnels".
    Si vous les évaluez en "booléen" comme dans les parties "rouges", ils valent "true/vrai" si le champ a été initialisé avec un nombre.
    Si vous ne les évaluez PAS en "booléen" mais en int, comme dans la partie "verte", vous utilisez les "vraies" valeurs contenue dans ces champs.
    Donc, ne les évaluez en "int" qu'après être sûr qu'ils aient été initialisés => le premier "if"(booléen) avant de faire le 2ème "if"(comparaison de int).

  11. #1191
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 782
    Par défaut
    https://github.com/laurentbouleau/Exemple : Avril 01 (02/04/2025)

    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
    std::wstring Serie::format_Annees() const
    {
        if (m_f_anneesProduction.first == m_f_anneesProduction.second)
        {
            if (m_f_anneesProduction.first&& m_f_anneesProduction.second)
            {
                return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value());
            }
            else
            {
                return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-' + m_valuesColor + std::to_wstring(m_f_anneesProduction.second.value());
            }
        }
        else if (m_f_anneesProduction.first && !(m_f_anneesProduction.second))
        {
            return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-';
        }
        else
        {
            std::pair<int, int> anneesDiffusion = calculer_Annees_Diffusion();
            return std::to_wstring(anneesDiffusion.first) + m_keyColor[1] + L'-' + m_valuesColor + std::to_wstring(anneesDiffusion.second);
        }
    }
    Ok !
    Merci beaucoup

    Maintenant ou plus tard : You ===> Exemple : else et https://zestedesavoir.com/tutoriels/...-mes-fichiers/ : std::cin !

  12. #1192
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 782
    Par défaut
    Je ne sais plus comment faire !

    Exemple :
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    ...
        std::wstring t;
        const wchar_t* p{ L".\\Exemple.txt" };
        std::filesystem::path filePath(p);
        try
        {
            t = lire_fichierTxt(filePath);
        }
        catch (runtime_error const& exception)
        {
            std::wcout << L"Erreur : " << exception.what() << std::endl;
        }
        
        AffichagePersonnalisation person = getCurrentAffichagePersonnalisation();//fonction à implémenter pour récupérer la configuration de personnalisation de l'utilisateur.
    
        const std::vector<std::wstring> racines{
                                            L"L'Attaque des Titans.[2013- Crunchyroll].Manga",
    ...
                                            L"Saison.txt",
                                            L"you"
        };
        auto racine = racines.back();
        std::wcout << L"racine=[" << racine << L']' << std::endl;
        fs::path r;// = L"";
        if (racine == racines.back())
        {
            std::wstring s;// = { demander_nom_dossier() };
            bool found = false;
            std::wcout << "You : " << std::endl;
            while (!found)
            {
                std::getline(wcin, s, L'\n');
                if (s.empty())
                {
                    std::wcout << L"Nom de dossier vide !!!" << std::endl;
                    std::wcout << "You : " << std::endl;
                    continue;
    
                }
                found = true;
                if (found)
                    break;
            }
            r = s;
        }
        else
        {
            r = t + racine;
    
        }
        auto nomDossier = r.filename().wstring();
        assert(nomDossier.length() > 0 && L"Nom de dossier vide");
    ...
    et
    "e:\Séries.[]\Will Trent.[2023-]"
    Merci beaucoup

  13. #1193
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 428
    Par défaut
    Toujours à vouloir complexifier inutilement le bidule.
    Vous voulez gérer des entrées clavier qui n'apportent rien, alors que vous n'avez toujours pas gérer l'externalisation de l'affichage ou le décodage récursif d'information qui ne sont pas que dans le nom du fichier (les +++ et autres --- dans les chemins des fichiers de données).

    Vous mettez la charrue avant les bœufs et vous ne donnez pas cette version dans GitHub, donc on ne "comprend" pas vos modifications.

    Vous utilisez très maladroitement la boucle while avec ces "continue" et autres "break" totalement inutiles voire piégeux.
    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
            while (!found)
            {
                std::getline(wcin, s, L'\n');
                if (s.empty())
                {
                    std::wcout << L"Nom de dossier vide !!!" << std::endl;
                    std::wcout << "You : " << std::endl;
                }
                else
                {
                    // vérification de l'existence du répertoire ...
                    found = true;
                }
            }
            r = s;
    ET LES NOMS DES VARIABLES, BORDEL !!!
    Votre code ne me semble pas "logique".
    Pouvez-vous commenter chaque ligne de votre extrait de code avec 3 à 4 mots par ligne pour expliquer ce que doit faire cette ligne ?

    "e:\Séries.[]\Will Trent.[2023-]"
    C'est quoi le problème ?
    A part que vous nous collez un chemin absolu qui n'a aucune chance d'être valable sur d'autres machines que la vôtre ? (cf. l'utilisation de chemins relatifs dans le fichier "Exemple.txt" qui référence des données disponibles dans le dépôt GitHub)

  14. #1194
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 782
    Par défaut
    Bonsoir,
    Je suis perdu !

    https://github.com/laurentbouleau/Exemple : Avril 02 (08/04/2025)

    Nom : Capture d’écran 2025-04-08 225702.png
Affichages : 56
Taille : 56,2 Ko

    d:\Work\Prg\CPP\You - Copie (https://github.com/laurentbouleau/You---Copie) : préférer !
    d:\Work\Prg\CPP\Exemple

    You - Copie (Release)===> Exemple (debug)

    Exemple : Exemple.cpp :
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
        std::wstring t;
        const wchar_t* p{ L".\\Exemple.txt" };
        std::filesystem::path filePath(p);
        try
        {
            t = lire_fichierTxt(filePath);
        }
        catch (runtime_error const& exception)
        {
            std::wcout << L"Erreur : " << exception.what() << std::endl;
        }
        
        AffichagePersonnalisation person = getCurrentAffichagePersonnalisation();//fonction à implémenter pour récupérer la configuration de personnalisation de l'utilisateur.
    
        //std::list<std::wstring> racines{
        const std::vector<std::wstring> racines{
                                            L"L'Attaque des Titans.[2013- Crunchyroll].Manga",
                                            L"Azertyuiop £££.[2024-].Mini-série",
    
                                            L"Kaleidoscope.[2023 Netflix]",
                                            L"Seven Deadly Sins- Four Knights of the Apocalypse.[2023-].Manga",
                                            L"Dr. STONE.[2019- Crunchyroll].Manga",
                                            L"Andor.[2022- Disney+]",
                                            L"Star Wars Rebels.[2014-2017 Disney+].Animation",
                                            L"Star Wars- The Clone wars.[2008-2020 Disney+].Animation",
                                            L"Shogun.[2024- Disney+]",
                                            L"Love, Death + Robots.[2019- Netflix].Animation",
                                            L"1883.[2021 Paramount+]",
    
                                            L"Avatar 2 - la voie de l'eau.(2022-12-14)",
                                            L"Kingsglaive- Final Fantasy XV.(2016-08-30 VOD).Animation",
                                            L"Prey.(2022-08-05 Disney+)",
                                            L"Sous la Seine.(2024-06-05 Netflix)",
                                            L"Star Wars - Episode VII - Le réveil de la force.(2015-12-16)",
                                            L"Star Wars- The Clone Wars.(2008-08-27).Animation",
                                            L"Saison.txt",
                                            L"you"
        };
        //auto racine = racines[0];
        //auto racine = racines[1];
        //auto racine = racines[2];
        //auto racine = racines[3];
        //auto racine = racines[4];
    //    auto racine = racines[6];
        //auto racine = racines[9];     
        //auto racine = racines[10];
    
        //auto racine = racines[11];
        //auto racine = racines[16];
        auto racine = racines.back();
        std::wcout << L"racine=[" << racine << L']' << std::endl;
        fs::path r;// = L"";
        if (racine == racines.back())
        {
            //std::vector<wstring> argv_You = lire_fichierTxt(L"d:\\Users\\admin\\Documents\\You.txt", {L"\n"});
    
            //std::flush;
    //std::cin.ignore(255, '\n');
    //std::cin.clear();
    
    //std::cin.eof()
    //std::cin.fail()
    //        Il existe des flux pour communiquer avec des fichiers(std::ifstream et std::ofstream), avec des chaînes de caractères(std::istringstream et std::ostringstream), avec l’entrée et la sortie standards(std::cin et std::cout).
    
    
    
    
            /*std::vector<wstring> s;// = { demander_nom_dossier() };
            std::wstring wstr;
            bool found2 = false;
            bool found_you = false;
            bool found_t = false;
            bool found_f_ou_s = false;
            bool found_dossier = false;
            std::wstring dossier = L"";
            std::wcout << "You : " << std::endl;
            while (!found2)
            {
                while (std::getline(wcin, wstr, L' '))
                {
                    ;
                    if (wstr.empty())
                    {
                        std::wcout << L"Nom de dossier vide !!!" << std::endl;
                        std::wcout << "You : " << std::endl;
                        continue;
    
                    }
                    if (!found_you && !found_t && !found_f_ou_s && !found_dossier && (wstr == L"you" || wstr == L"You" || wstr == L"YOU")  )
                    {
                        found_you = true;
                        wstr = L"";
                        continue;
                    }
                    if (!found_t && !found_f_ou_s && !found_dossier && (wstr[0] == L'/' || wstr[0] == L'-') && wstr[1] == L't'/)
                    {
                        found_t = true;
                        wstr = L"";
                        continue;
                    }
                    if (!found_f_ou_s && !found_dossier && (wstr[0] == L'f' || wstr[0] == L's'))
                    {
                        found_f_ou_s = true;
                        wstr = L"";
                        continue;
                    }
                    if (!found_dossier)// && std::is_directory(wstr))
                    {
                        dossier = wstr;
                        wstr = L"";
                        
                        found_dossier = true;
                        if (found_dossier)
                            break;
                    }
                }
            }
    
            r = dossier + L" " + std::getline(wcin, wstr, L'\n');
            */
    
            //std::wcin.clear();
            std::wstring wstr;
            std::vector<std::wstring> dossier;
    
            std::vector<std::wstring> dos;
    
            //while (getline(std::wcin, wstr))
            //{
            //    dos.push_back(wstr);
            //}
    
            // Now try it with a whitespace delimiter
            while (std::getline(std::wcin, wstr, L' '))
            {
                dossier.push_back(wstr);
            }
            dossier.erase(dossier.begin());
            dossier.erase(dossier.begin());
            dossier.erase(dossier.begin());
            for (const auto& d : dossier)
            {
                std::wcout << d << std::endl;
            }
        }
        else
        {
            r = t + racine;
    
        }
        auto nomDossier = r.filename().wstring();
        assert(nomDossier.length() > 0 && L"Nom de dossier vide");
    Ensuite, You - copie ===> Exemple !!! Mais, tant pis !!!

    Nom : Capture d’écran 2025-04-09 020723.png
Affichages : 63
Taille : 15,3 Ko
    ???

    J'en ai marre !!!

  15. #1195
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 428
    Par défaut
    Vous êtes peut-être perdu mais vous ne nous donnez aucune explication sur l'endroit où vous voulez aller, on est donc encore plus perdu que vous.
    Expliquez ce que vous VOULEZ faire, parce que nous, on n'en sait rien (surtout avec votre manie de nommer vos variables n'importe comment).

    Vous nous montrez un fichier "You.txt" qui ressemble à rien dans aucun de vos dépôts GitHub ( et ça devient un capharnaüm ces dépôts).
    C'est plus un mixe entre des traces dans une console et un fichier BAT.
    C'est quoi ce truc ?!?!?
    Vous nous y collez des "Ici" mais c'est quoi ces "Ici" ???
    Vous vous baladez dans VOTRE système de fichier, qui n'est pas le même chez les autres.
    Si vous voulez qu'on puisse vous aider, il faut que vous vous restreigniez à ce que nous pouvons récupérer ou générer à partir des dépôts GitHub, sinon, c'est mort.
    On voit que vous vous baladez dans des répertoires "Release", mais à aucun moment vous n'avez un code assez mûr pour envisager une version "Release" de l'exécutable généré, donc ARRETEZ de vous balader dans ces répertoires qui ne sont, au mieux qu'une version anachronique et inutilisable d'un machin dont on n'a même pas le code source correspondant.
    On n'a même pas le fichier en entier dans la copie d'écran.
    Et pourquoi une copie d'écran plutôt que directement le contenu du fichier dans le message posté ???

    d:\Work\Prg\CPP\You - Copie
    d:\Work\Prg\CPP\Exemple
    Ok, on voit où vous avez descendu les dépôts GitHub dans votre système de fichier, mais "You - Copie" n'existe pas dans GitHub.
    "You - Copie", c'est le "You---Copie" dans GitHub ?
    Alors pourquoi vous n'avez pas les mêmes noms ???

    You - Copie ===> Exemple
    Ça veut dire quoi ???
    Que vous voulez mettre des fonctionnalités de "You---Copie" dans "Exemple" ???
    Mais lesquelles ???
    Je vous rappelle qu'"Exemple" est un projet pour montrer qu'on n'a pas à avoir la putain d'usine à gaz du projet "You" pour l'affichage pour faire des sorties consoles "évoluées".
    Donc pourquoi vouloir saloper le projet "Exemple" avec cette cochonnerie ???
    C'est plutôt l'inverse qu'il faut faire. C'est nettoyer le code de "You", "You---Copie" ou tout autres de vos usines à gaz avec ce que vous avez appris avec le projet "Exemple".

    On va dire que c'est juste l'interprétation des informations données via la console (et pas via la ligne de commande ni un fichier de configuration).
    Pourquoi faire simple quand on peut faire très très compliqué ?
    Je vous rappelle que le projet "Exemple" a déjà tout ce qu'il faut pour gérer un fichier de configuration (le fichier Exemple.txt), avant que vous ne salopiez tout cela avec votre putain de variable "racines" des enfers.
    On va se baser sur tout le code que vous avez mis en commentaire ; plutôt que sur ce qui reste de votre expérimentation, qui n'a aucun sens.
    Elle n'a aucun sens et il semble que vous n'avez même pas pris la peine de lire ou de comprendre la documentation de "std::getline" :
    https://en.cppreference.com/w/cpp/st...string/getline
    (Je vous l'accorde, les exemples sont un peu piégeux)

    "std::getline" renvoie le flux d'entré, pour pouvoir chainer les appels.
    Donc une ligne comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (std::getline(std::wcin, wstr, L' '))
    C'est censé sortir de la boucle quand ?
    Bin, quand "std::wcin" sera fermé, c'est à dire, pas avant la fin du programme, bien joué.
    (Remarquez que le "for (std::string line; std::getline(input, line) ; )" de la documentation fonctionne car il n'utilise pas la console mais un "std::istringstream" en mémoire, d'où le "piégeux" de la doc. .)

    Donc, au lieu des dizaine de lignes de votre commentaire, on peut les remplacer par ces quelques lignes (pour implémenter un truc complètement inutile, je le rappelle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            std::wregex inputALaCon_pattern{ L"^\\s*(you|You|YOU)\\s+(-|/)t\\s+(s|f)\\s+(.)+$" };
            std::wsmatch matchInputALaCon;
            std::getline(std::wcin, wstr);
            if (std::regex_match(wstr, matchInputALaCon, inputALaCon_pattern))
            {
                if (matchInputALaCon[4].matched && fs::is_directory(matchInputALaCon[4].str()))
                {
                    //Les 2 lignes suivantes n'ont aucun putain de sens mais c'était dans vos commentaires et ça compile :-((
                    std::getline(wcin, wstr, L'\n');
                    r = matchInputALaCon[4].str() + L" " + wstr;
                }
            }
    En sachant que ce format d'entrée ultra casse-couille n'a aucun sens dans ce type d'usage, qui n'est pas une ligne de commande, mais une entrée interactive au clavier.
    Juste vérifier que ce qui est entrée est un nom de répertoire devrait largement suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    std::getline(wcin, wstr);
    if (fs::is_directory(wstr))
    {
        //faire un truc "intelligent"
    }
    Ensuite, You - copie ===> Exemple !!! Mais, tant pis !!!
    Mais "tant pis" quoi ???
    Expliquez ce que vous voulez faire, BORDEL !!!
    Nom : capture-d-ecran-2025-04-09-020723.png
Affichages : 49
Taille : 15,3 Ko
    Quel rapport vos problèmes de programmation ont avec la création d'un raccourci ???

    A chaque fois qu'on vous demande d'expliquer votre code, rien à faire, vous ne le faites pas. Si vous en n'est pas capable, je crois qu'on peut arrêter là, on n'avancera pas.

    P.S.: La seule autre modification, l'inversion des conditions des "if" dans la fonction "Serie::format_Annees()" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (m_f_anneesProduction.first == m_f_anneesProduction.second)
    {
        if (m_f_anneesProduction.first&& m_f_anneesProduction.second)
    C'est complètement faux maintenant.
    Vous n'avez pas compris le message que j'avais posté spécifiquement pour ne pas faire cette erreur.
    https://www.developpez.net/forums/d2.../#post12077028

  16. #1196
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 782
    Par défaut
    Excuse moi !

    d:\User\admin\Documents\You.txt <===> You.txt !
    github : You.txt
    Ok !

    https://github.com/laurentbouleau/Exemple : Avril 03 (09/04/2025)

    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
    std::wstring Serie::format_Annees() const
    {
        if (m_f_anneesProduction.first && m_f_anneesProduction.second)
        {
            if (m_f_anneesProduction.first == m_f_anneesProduction.second)
            {
                return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value());
            }
            else
            {
                return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-' + m_valuesColor + std::to_wstring(m_f_anneesProduction.second.value());
            }
        }
        else if (m_f_anneesProduction.first && !(m_f_anneesProduction.second))
        {
            return m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-';
        }
        else
        {
            std::pair<int, int> anneesDiffusion = calculer_Annees_Diffusion();
            return std::to_wstring(anneesDiffusion.first) + m_keyColor[1] + L'-' + m_valuesColor + std::to_wstring(anneesDiffusion.second);
        }
    }
    Ok !

    raccourci ===> Daredevil- Born Again.[2025- Disney+].Mini-série
    (e:\\Séries.[]\\Daredevil- Born Again.[2025- Disney+].Mini-série)
    https://github.com/laurentbouleau/Exemple : Daredevil- Born Again.[2025- Disney+].Mini-série : Marches pas !
    github : Daredevil- Born Again.[2025- Disney+].Mini-série.lnk

    ---------------------------------------------

    Mieux : Exemple !!!
    You et you - Copie : j'en ai marre !!!

    Alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
        auto racine = racines.back();
        std::wcout << L"racine=[" << racine << L']' << std::endl;
        fs::path r;// = L"";
        if (racine == racines.back())
        {
    ...
    et https://zestedesavoir.com/tutoriels/...-en-c-moderne/ : compliqué !!!

    Merci d'avance

  17. #1197
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 428
    Par défaut
    d:\User\admin\Documents\You.txt <===> You.txt !
    github : You.txt
    Ok !

    https://github.com/laurentbouleau/Exemple : Avril 03 (09/04/2025)
    Ok, maintenant on a "You.txt" dans le dépôt GitHub, mais il sert à quoi ce fichier ???
    Et il y a des chemins de fichiers et de répertoires dedans qui ne correspondent pas à ce que nous pouvons avoir sur nos machines "locales" après avoir descendu le dépôt GitHub.
    Si vous voulez qu'on puisse vous aider, il faut que le dépôt GitHub suffice à générer l'exécutable ET faire passer les tests.
    Donc pas de chemin hors de l'arborescence gérer dans le projet GitHub.

    Les lignes dans ce fichier ressemblent à l'appel à l'exécutable "You.exe" qui n'a rien à faire dans le projet "Exemple".
    Encore une fois, à quoi sert ce fichier tout pourri ???

    raccourci ===> Daredevil- Born Again.[2025- Disney+].Mini-série
    (e:\\Séries.[]\\Daredevil- Born Again.[2025- Disney+].Mini-série)
    https://github.com/laurentbouleau/Exemple : Daredevil- Born Again.[2025- Disney+].Mini-série : Marches pas !
    github : Daredevil- Born Again.[2025- Disney+].Mini-série.lnk
    Encore une fois, c'est l'arborescence gérée par le projet GitHub qui doit avoir les fichiers.
    Il peut avoir des liens de l'extérieur de cette arborescence vers cette arborescence mais pas l'inverse.
    Donc pas de "xxx.lnk" foireux.
    En plus votre programme ne gère pas ces fichiers ".lnk" et j'en vois pas l'intérêt.

    Mieux : Exemple !!!
    You et you - Copie : j'en ai marre !!!
    On ne sait toujours pas pourquoi vous vous prenez la tête avec un nouveau projet "you - Copie".
    Vous ne nous montrez pas ce que vous voulez ajouter au projet "You".
    J'ai déjà montré qu'il était facile d'ajouter les classes métiers (Serie, Film, etc...) dans le projet "You", car elles ont été conçues de manière modulaire (malgré votre manu de foutre de l'affichage partout").

    Il a plutôt bonne réputation et il utilise une approche moderne du langage C++.
    C'est plus compliqué pour un codeur C, mais cela permet de ne pas mélanger les 2 langages.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
        auto racine = racines.back();
        std::wcout << L"racine=[" << racine << L']' << std::endl;
        fs::path r;// = L"";
        if (racine == racines.back())
        {
    ...
    Vous avez laissé tout le code foireux qui fait planté le programme dans le code source que vous esquivez avec un pitoyable "auto racine = racines[10]".
    Ça vous re-pètera à la gueule à la prochaine bidouille sur "racine".
    Surtout que j'avais donné un code en 3 lignes qui fait "correctement" le travail à la place des dizaines de lignes en commentaire mais aussi "actives" qui font n'importe quoi dont faire planter le programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    std::getline(wcin, wstr);
    if (fs::is_directory(wstr))
    {
        //faire un truc "intelligent"
    }
    Vous aimez piéger votre code ou quoi ?
    Gardez votre code "sain".
    Dégagez tout ce qui est foireux, dont cette putain de variable initialisée "racines".

+ Répondre à la discussion
Cette discussion est résolue.
Page 60 sur 60 PremièrePremière ... 10505657585960

Discussions similaires

  1. Probléme avc la formclosing
    Par dv-2008 dans le forum VB.NET
    Réponses: 2
    Dernier message: 23/03/2008, 16h33
  2. probléme avc console.readline()
    Par dv-2008 dans le forum VB.NET
    Réponses: 7
    Dernier message: 10/03/2008, 00h33
  3. j'ai un probléme avc un code vb.net aider moi svp
    Par dv-2008 dans le forum VB.NET
    Réponses: 12
    Dernier message: 29/01/2008, 09h20
  4. Problème avc une requête
    Par Raiga dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 30/06/2007, 18h36
  5. Toujours problème de lien avce la lib Cblas
    Par Kirou dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 19/06/2007, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo