J'ai besoin d'une solution pour le tri du fichier pwd unix en utilisant C++ basé sur le nom de famille. Le format du fichier est nom d'utilisateur, mot de passe, uid, gid, nom, homedir, shell. Tous sont séparés par des délimiteurs du côlon. Le champ de nom contient le prénom suivi par le nom de famille séparés par l'espace. Je suis capable de trier les valeurs en utilisant map et je poste mon code. Quelqu'un peut-il me suggérer des améliorations que je peux faire pour mon code s'il vous plaît. Aussi je suis incapable de voir les lignes triées dans mon dossier.trier les chaînes dans un fichier
string line,item;
fstream myfile("pwd.txt");
vector<string> lines;
map<string,int> lastNames;
map<string,int>::iterator it;
if(myfile.is_open())
{
char delim =':';
int count =0;
while(!myfile.eof())
{
count++;
vector<string> tokens;
getline(myfile,line);
istringstream iss(line);
lines.push_back(line);
while(getline(iss,item,delim))
{
tokens.push_back(item);
}
cout<<tokens.size()<<endl;;
size_t i =tokens[4].find(" ");
string temp = tokens[4].substr(i,(tokens[4].size()-i));
cout<<temp<<endl;
lastNames.insert(pair<string,int>(temp,count));
tokens.clear();
}
myfile.seekg(0,ios::beg);
for(it=lastNames.begin();it!=lastNames.end();it++)
{
cout << (*it).first << " => " << (*it).second << endl;
int value=lastNames[(*it).first ];
myfile<<lines[value-1]<<endl;
cout<<lines[value-1]<<endl;
cout<<value<<endl;
}
}
Également j'ai du mal à écrire dans le fichier Je n'arrive pas à voir les résultats triés.
mon problème:
Can someone please explain me why I am unable to see the written results in the file!
Merci & Cordialement,
Mousey.
Définir "très grand". La meilleure façon de trier un fichier de 40 Mo et un fichier de 4 Go est très différente, même si les deux sont sans doute "très gros" pour un fichier pwd. –
Pourquoi avez-vous besoin de le faire en C? L'utilitaire de ligne de commande 'sort' peut probablement résoudre votre problème en un rien de temps. –
suppose que le fichier est de l'ordre de quelques mégaoctets. Je voudrais aussi savoir comment le trier si son ordre de quelques giga octets – mousey