Précédent   Forum du club des développeurs et IT Pro > C et C++ > C++ > Débuter
Débuter Forum d'entraide pour débuter en langage de programmation C++. Avant de poster : cours d'initiation au C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 23/02/2013, 18h39   #1
madara22
Invité de passage
 
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 0
Points : 0
Par défaut Comparer un std::string avec 1 caractère variable

Bonjour tout le monde.

J'aimerais savoir s'il est possible de comparer deux std::string entre elles mais pouvant être considérés comme égales même si un caractère (variable) diffère.
Par exemple : tant que l'on à cet expression "test(X)" ou X peut prendre n'importe quelle expression (test(5), test(u), test(µ)...), alors cette expression est considéré comme égale à un autre std::string qui n'a pas ce même caractère X. Ex : "test(a)" == "test(b)" est vrai.

J'espère que vous m'avez bien compris

Merci d'avance.
madara22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2013, 19h19   #2
Médinoc
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 22 380
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2005
Messages : 22 380
Points : 32 015
Points : 32 015
Envoyer un message via MSN à Médinoc
Si tu veux une comparaison avec jokers, tu vas devoir la coder toi-même ou prendre une bibliothèque qui fait ça: la bibliothèque du C++ ne le fait pas.

D'un autre coté, ça ne doit pas être trop dur:
Code C++ :
1
2
3
4
5
6
7
8
9
10
11
bool equal_wildcards(const string &ref, const string &test)
{
	if(ref.length() != test.length())
		return false;
	for(size_t i=0 ; i<ref.length() ; i++)
	{
		if(ref[i] != '?' && ref[i] != test[i])
			return false;
	}
	return true;
}
Note: je n'ai pas testé ce code, mais c'est l'idée générale.
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone.
-- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Médinoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2013, 20h04   #3
Bousk
Modérateur
 
Homme Cyrille
Network programmer
Inscription : juin 2010
Messages : 1 543
Détails du profil
Informations personnelles :
Nom : Homme Cyrille
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Network programmer

Informations forums :
Inscription : juin 2010
Messages : 1 543
Points : 4 084
Points : 4 084
Bonsoir,

une simple utilisation de string::compare pourriat s'il s'agit de vérifier qu'une partie des chaines sont identiques.
Bousk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2013, 21h46   #4
madara22
Invité de passage
 
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 0
Points : 0
Merci pour vos réponses !

La fct equal_wildcards marche très bien mais finalement je me suis rendu compte que string::compare fesait l'affaire
madara22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2013, 13h37   #5
JolyLoic
Rédacteur/Modérateur
 
Avatar de JolyLoic
 
Homme Loïc Joly
Développeur informatique
Inscription : août 2004
Messages : 4 674
Détails du profil
Informations personnelles :
Nom : Homme Loïc Joly
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2004
Messages : 4 674
Points : 9 890
Points : 9 890
Tu as maintenant en standard en C++ une bibliothèque d'expressions régulières, qui te permet très facilement de vérifier ce genre de choses. C'est dans le header <regex>.

Si ton compilateur est trop vieux pour la fournir, tu peux regarder dans boost.regex
__________________
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
JolyLoic est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h00.


 
 
 
 
Partenaires

Hébergement Web