Partage
  • Partager sur Facebook
  • Partager sur Twitter

trouver une chaine dans un ficher

c++

Sujet résolu
    6 janvier 2020 à 16:37:21

    bonjour je suis dans une impasse:

    jais un ficher avec des nom d’utilisateur du type(le ficher pas les nom d’utilisateur):

    jean

    Michelle

    Lucas

    Marie

    est je veut vérifier si l’utilisateur actuelle est contenus dans ce ficher

    a oui aussi si c'est possible est pas trop énervent  on peut le mettre dans main?

    merci d’avance

    -
    Edité par unel 6 janvier 2020 à 17:05:09

    • Partager sur Facebook
    • Partager sur Twitter
      6 janvier 2020 à 17:27:02

      Bonjour,

      Cette page t'apportera toute les info dont tu as besoin je pense : http://www.cplusplus.com/doc/tutorial/files/

      Ce qui est important dans ton cas sont principalement les fonctions :

      • Partager sur Facebook
      • Partager sur Twitter

      Plus j'apprends et plus je me rends compte que je ne sais rien.

        6 janvier 2020 à 17:41:40

        Salut,

        Lis tout ton fichier avec std::ifstream et std::getline, et stock tout tes noms dans un std::set, tu n'auras plus qu'à appeler find() dessus

        C'est toujours possible de tout mettre dans le main, mais pour des raisons de relecture / maintenance / évolutivité / réusabilités, il vaut mieux découper les fonctionnalités.

        Si c'est pour faire un système d'authentification, ça me parait assez naïf comme approche, il va être amené à évoluer

        EDIT : grillé

        -
        Edité par romantik 6 janvier 2020 à 17:42:33

        • Partager sur Facebook
        • Partager sur Twitter
        Dream on, Dream on, Dream until your dream comes true
          6 janvier 2020 à 18:20:13

          oui

          romantik cest possible que ce système évolué mais ça permet de ne pas s'authentifier a chaque fois donc pour instant un moyen syple fonctionne :euh:

          mais je n’ai jamais utiliser de find() avers vous un exemple?:-° ☺☻

          -
          Edité par unel 6 janvier 2020 à 18:25:32

          • Partager sur Facebook
          • Partager sur Twitter
            6 janvier 2020 à 22:43:18

            Sur la page que je t'ai citée y en a un. C'est pas forcément le plus parlant. En cherchant sur internet tu trouveras ton bohneur très rapidement.
            • Partager sur Facebook
            • Partager sur Twitter

            Plus j'apprends et plus je me rends compte que je ne sais rien.

              8 janvier 2020 à 18:51:09

              merci mais jais fait un petit bout de code pour reconaitre les no dutilisateur est je ne comprend pas pourquoi ca ne fonctionne pas HELP ☺☻
              #include <iostream>
              #include <string>
              #include <fstream>
              #include <stdlib.h>
              #include <stdlib.h>
              #include <ctime>
              #include <windows.h>
              #include <Lmcons.h>
              
              using namespace std;
              
              int main()
              {
              
                  //recuperation du nom dutilisateur
                  char user_name[UNLEN+1];
                  DWORD user_name_size = sizeof(user_name);
                  if (GetUserName(user_name, &user_name_size))
                  {
                      cout << "bonjour " << user_name << endl;
                  }
                  else
                  {
                      cout << "ERREUR 1: une erreur est survenue lors du teste de votre nom dutilisateur ce programe ne peut y axeder contacter la persone qui vous a donner ce t-chat (plus styler que chat). cette fenetre va s'auto fermer sous 10 seconde"<<endl;
                      Sleep(10000);
                      exit (1);
                  }
              
              
                  //verification des autorisation des utilisateur grace a C:/nanoc/verification_des_autorisation.data
              
                  ifstream verification_des_autorisation("C:/nanoc/verification_des_autorisation.txt", ios::in);
                  if(verification_des_autorisation)
                  {
                      //L'ouverture s'est bien pass�e, on peut donc lire
                      cout << "lecture des ficher d'autorisation reusis"<<endl;
                      string ligne("soit votre t-chat n'a pas été cree soi il a été renisialiser re-crée le !");
                      int nbtour(0);
                      cout <<" les utilisateur autoriser a utiliser ce t-chat sont : "<<endl;
                      while(getline(verification_des_autorisation, ligne)) //Tant qu'on n'est pas à la fin, on lit
                      {
                          cout << ligne << endl;
                          ++nbtour;
                      }
                      cout << "il y a "<<nbtour<<" ligne"<<endl;
              
                      int nbtour2(0);
                      ligne=("");
                      while(getline(verification_des_autorisation, ligne)) //Tant qu'on n'est pas à la fin, on lit
                      {
                          ++nbtour2;
                          if (user_name==ligne)
                          {
                              cout<<"les autorisaton vous sont favorable"<<endl;
                              goto sorti_d_inisialisation; // desoler ler lecteur je ne pouver fair autrement si vous y ariver changer ca ce goto va a la ligne 69 (normalemet)
                          }
                          else if (nbtour2==nbtour)
                          {
                              cout << "ERREUR 3: votre nom dutilisateur nest ppas contenus dans vos ficher ditantification parler en a la persone qui vous a donner ce t-chat (plus styler que chat). cette fenetre va s'auto fermer sous 10 seconde" <<endl;
                              Sleep(10000);
                              exit(2);
                          }
              
                      }
              
                      }
                  else
                  {
                      cout << "ERREUR 3: Impossible d'ouvrir le fichier dautantifiction parler en a la persone qui vous a donner ce t-chat (plus styler que chat). cette fenetre va s'auto fermer sous 10 seconde" << endl;
                      Sleep(10000);
                      exit (3);
                  }
                  sorti_d_inisialisation:
                  cout <<"voila"<<endl;
              }

              cest comme si le programe ne liser pas les deux if a la ligne 51 a 62

              -
              Edité par unel 8 janvier 2020 à 19:00:00

              • Partager sur Facebook
              • Partager sur Twitter
                9 janvier 2020 à 10:18:41

                Il dit quoi le débogueur ?
                • Partager sur Facebook
                • Partager sur Twitter
                Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                  9 janvier 2020 à 10:19:03

                  Ton soucis vient du fait que tu as déjà parcouru ton fichier en entier avec la boucle précédente, ton curseur est donc à la fin du fichier quand tu veux le parcourir un deuxième fois alors tu ne récupère rien

                  La solution la plus simple je pense c'est de charger tout le fichier dans un set, tu aurais un code qui ressemble à ceci

                  #include <iostream>
                  #include <fstream>
                  #include <string>
                  #include <set>
                  
                  int main()
                  {
                      std::set<std::string> userList;
                      std::ifstream configFile {"C:/nanoc/verification_des_autorisation.txt"};
                      if(configFile)
                      {
                          std::string user;
                          while(std::getline(configFile, user))
                          {
                              userList.insert(user);
                          }
                      }
                      else
                      {
                          std::cerr << "Error on openning config file" << std::endl;
                          return 1;
                      }
                      
                      std::string userName;
                      // ...
                      //recuperation du nom de l'utilisateur
                      // ...
                      
                      if(userList.find(userName) != userList.end())
                          std::cout << userName << " is allowed" << std::endl;
                      else
                          std::cout << userName << " is forbidden" << std::endl;
                      
                      return 0;
                  }
                  

                  Si tu veux vraiment faire le check au fur et à mesure de la lecture du fichier et stopper lorsque tu l'as trouvé, tu as quelque chose plus comme ça

                  #include <iostream>
                  #include <fstream>
                  #include <string>
                  
                  int main()
                  {    
                      std::string userName;
                      // ...
                      //recuperation du nom de l'utilisateur
                      // ...
                      
                      bool userAllowed = false;
                      std::ifstream configFile {"C:/nanoc/verification_des_autorisation.txt"};
                      if(configFile)
                      {
                          std::string user;
                          while(std::getline(configFile, user))
                          {
                              if(user == userName)
                              {
                                  userAllowed = true;
                                  break;
                              }
                          }
                      }
                      else
                      {
                          std::cerr << "Error on openning config file" << std::endl;
                          return 1;
                      }
                      
                      if(userAllowed)
                          std::cout << userName << " is allowed" << std::endl;
                      else
                          std::cout << userName << " is forbidden" << std::endl;
                      
                      return 0;
                  }
                  

                  Si c'est vraiment la seule utilisation de cette liste, ça vaut peut-être le coup effectivement


                  • Partager sur Facebook
                  • Partager sur Twitter
                  Dream on, Dream on, Dream until your dream comes true
                    9 janvier 2020 à 17:14:06

                    merci ça fonctionne nickel ☺☻:):D;):magicien:

                    voici mon code final

                    #include <iostream>
                    #include <string>
                    #include <fstream>
                    #include <stdlib.h>
                    #include <ctime>
                    #include <windows.h>
                    #include <Lmcons.h>
                    #include <set>
                    using namespace std;
                    
                    int main()
                    {
                    
                    	set<string> userList;
                    	cout << "verification de lexistance du fichier d'idantification" << endl;
                    	ifstream configFile("C:/nanoc/verification_des_autorisation.txt");
                    	if (configFile)
                    	{
                    		cout << "done" << endl;
                    			cout << "configuration du nom dutilisateur" << endl;
                    		string user;
                    		while (getline(configFile, user))
                    		{
                    			userList.insert(user);
                    		}
                    		cout << "done" << endl;
                    	}
                    	else
                    	{
                    		cerr << "imposible d'ouvrir le ficher d'idantification  contacter la persone qui vous a distribuer ce t-chat fermetur dans 10 seconde" << endl;
                    		Sleep(10000);
                    		exit(1);
                    	}
                    
                    	cout << "atribution du nom dutilisateur" << endl;
                    	char userName[UNLEN + 1];
                    	DWORD user_name_size = sizeof(userName);
                    	if (GetUserName(userName, &user_name_size))
                    		cout << "done" << endl;
                    	cout << "bonjour " << userName << endl;
                    	if (userList.find(userName) != userList.end())
                    	{
                    		cout << userName << "  reconus. " << endl;
                    	}
                    
                    	else
                    	{
                    		cout << userName << "  non reconus.  contacter la persone qui vous a distribuer ce t-chat fermetur dans 10 seconde" << endl;
                    		Sleep(10000);
                    		exit(2);
                    	}


                    bon il fut fair le trie dans les includes

                    -
                    Edité par unel 9 janvier 2020 à 17:16:18

                    • Partager sur Facebook
                    • Partager sur Twitter

                    trouver une chaine dans un ficher

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown