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
Dream on, Dream on, Dream until your dream comes true
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
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 <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
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.
Plus j'apprends et plus je me rends compte que je ne sais rien.
Plus j'apprends et plus je me rends compte que je ne sais rien.