J'essaie de créer un programme C++ qui me permet de lire à partir d'un fichier et trouver une correspondance d'une entrée de chaque ligne. Notez que chaque ligne est un enregistrement unique délimité par une virgule. Si une correspondance a été trouvée, la sortie attendue sera une chaîne d'un enregistrement.C++ lu à partir des fichiers et des données tokenize
Par exemple: les données du fichier =>
andrew, andy, Andrew Anderson
jade, blasé, Jade Sonia Lameentrée => jade
sortie => blasé
Comment est-ce que je peux faire ceci? J'essaye de mettre en application strtok, mais en vain. Jusqu'à présent, je n'obtiens pas de bons résultats. Quelqu'un pourrait m'aider avec ça?
EDIT
en ce qui concerne ce problème, je pense que je reçois quelque part ... mais encore les plantages d'écran de sortie lorsque je l'exécute. ceci est mon code
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
main() {
// string toks[];
char oneline[80],*del;
string line, creds[4];
int x = 0;
ifstream myfile;
myfile.open("jake.txt");
if (myfile.is_open())
{
while (!myfile.eof())
{
getline(myfile,line);
strcpy(oneline,line.c_str());
del = strtok(oneline,",");
while(del!=NULL)
{
creds[x] = del;
del = strtok(NULL,",");
x++;
}
}
myfile.close();
}
else
cout << "Unable to open file";
system("pause");
}
quelqu'un peut-il faire la lumière sur ceci pour moi s'il vous plaît?
EDIT ....
J'ai quelques progrès sur celui-ci ... le problème est maintenant que lorsque l'entrée est adaptée à la ligne suivante, il se bloque ...
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
main() {
// string toks[];
char oneline[80],*del;
string line, creds[3], username, password;
int x = 0;
cout<<"Enter Username: ";
cin>>username;
cout<<"Enter Password: ";
cin>>password;
ifstream myfile;
myfile.open("jake.txt");
if (myfile.is_open())
{
while (!myfile.eof())
{
getline(myfile,line);
strcpy(oneline,line.c_str());
del = strtok(oneline,",");
while(del!=NULL)
{
creds[x] = del;
del = strtok(NULL,",");
++x;
}
if((creds[0]==username)&&(creds[1]==password))
{
cout<<creds[2]<<endl;
break;
}
}
myfile.close();
}
else
cout << "Unable to open file";
system("pause");
}
Quelqu'un peut-il m'aider s'il vous plaît?
Vous devriez accepter de bonnes réponses – zeller
Avez-vous besoin d'être préoccupé par les virgules dans un champ lui-même? (Comme surnom, "nom, prénom", deuxième prénom) – Dan
Ça me sent le devoir de programmation. –