Filtrer les mots specifiques dans un string en C++
-
mercredi 22 février 2012 15:50
Dans cet article, qui représente la troisième partie du tutoriel « Comment étendre les applications de style Metro avec les nouvelles extensions introduites en C++ », on va voir comment utiliser les types Windows Runtime comme les strings ou les collections interopèrent avec les types de STL.
Pour commencer, il faut télécharger et dézipper l’archive disponible sur http://video.ch9.ms/handsonlabs/build2011/708.zip et puis parcourir « Separer une chaine de caracteres en mots avec STL » pour pouvoir comprendre cet exemple.
Ciprian DUDUIALA, MSFT
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
- Modifié Ciprian Duduiala mercredi 29 février 2012 08:29
- Modifié Ciprian Duduiala mercredi 29 février 2012 12:33
- Modifié Ciprian Duduiala jeudi 1 mars 2012 07:29
- Déplacé Florin CiucaMicrosoft Contingent Staff, Owner vendredi 7 septembre 2012 09:42 (Origine :Développement d’applications de style Metro pour Windows 8)
Toutes les réponses
-
mercredi 22 février 2012 15:53
Dans cet exemple on va filtrer les mots qui représentent des articles et les autres mots de la liste seront affichés. Tout d’abord, on va définir un délègue au début du fichier Code.cpp après les espaces de noms :
delegate bool FilterString(String^);
Puis, on va changer la signature de WordSplitter::Splitpour accepter une instance du délègue FilterStringcomme deuxième paramètre :
IVector<String^>^ Split(String^ input, FilterString^ shouldFilter)
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
-
mercredi 22 février 2012 15:55
Dans WordSplitter::Split, avant ajouter un string nouveau dans la liste, on utilise le délègue pour décider s’il faut l’ajouter ou pas. Si aucun délégué est envoyé a notre fonction, on va ajouter le string :
if (shouldFilter == nullptr || !shouldFilter(s)) { wordList->Append(s); }Puis, dans HandsOnLab::Mainil faut changer l’appel à WordSplitter::Split. Une instance de FilterStringpeut être créée via une expression lambda, qui doit respecter la signature du délégué:
auto wordList = s->Split(inString, ref new FilterString([](String^ s) { return s->Equals("the") || s->Equals("a") || s->Equals("an"); } ));
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
-
mercredi 22 février 2012 15:56
Finalement, testez les modifications :
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.



