recherche d'une sous chaine et chaine vers tableau(ou vector)
9 réponses
Didier
bonjour,
je débute en C++ et C tout court d'ailleur;
s1 = "titi tutu tototo"
s2 = "titi tutu toto"
s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement,
comment faut-il faire ?
dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas ok, s2
et s3 ok
ma deuxième question :
comment faire pour intégrer une chaine dans un tableau ou un vector,
exemple : s1 = "25.33 17.34 67.00" les valeurs sont séparée pas des espaces,
je voudrait que chaque valeur devienne l'élément d'un tableau.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Guillaume LEMAÎTRE
Didier wrote:
bonjour,
je débute en C++ et C tout court d'ailleur;
s1 = "titi tutu tototo" s2 = "titi tutu toto" s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement, comment faut-il faire ? dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas ok, s2 et s3 ok
donc ça n'est pas tot que tu cherches, c'est [caractère séparateur]"toto"[caractère séparateur] avec [caractère séparateur] = début de chaîne | fin de chaine | blanc | tabulation
Didier wrote:
bonjour,
je débute en C++ et C tout court d'ailleur;
s1 = "titi tutu tototo"
s2 = "titi tutu toto"
s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement,
comment faut-il faire ?
dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas ok, s2
et s3 ok
donc ça n'est pas tot que tu cherches, c'est
[caractère séparateur]"toto"[caractère séparateur]
avec [caractère séparateur] = début de chaîne | fin de chaine | blanc |
tabulation
s1 = "titi tutu tototo" s2 = "titi tutu toto" s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement, comment faut-il faire ? dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas ok, s2 et s3 ok
donc ça n'est pas tot que tu cherches, c'est [caractère séparateur]"toto"[caractère séparateur] avec [caractère séparateur] = début de chaîne | fin de chaine | blanc | tabulation
Didier
"Guillaume LEMAÎTRE" a écrit dans le message de news:c254kr$89b$
Didier wrote:
bonjour,
je débute en C++ et C tout court d'ailleur;
s1 = "titi tutu tototo" s2 = "titi tutu toto" s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement, comment faut-il faire ? dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas ok, s2
et s3 ok
donc ça n'est pas tot que tu cherches, c'est [caractère séparateur]"toto"[caractère séparateur] avec [caractère séparateur] = début de chaîne | fin de chaine | blanc | tabulation
si s4 = "titi toto tutu" c'est ok aussi, si s5 ="toto" ou " toto" ou "toto " ou " toto " c'est ok
"tototo " c'est pas bon...
je cherche toto, quel que soit sa position dans la chaine
"Guillaume LEMAÎTRE" <zarmalala@biniou.org> a écrit dans le message de
news:c254kr$89b$1@news-reader3.wanadoo.fr...
Didier wrote:
bonjour,
je débute en C++ et C tout court d'ailleur;
s1 = "titi tutu tototo"
s2 = "titi tutu toto"
s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement,
comment faut-il faire ?
dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas ok,
s2
et s3 ok
donc ça n'est pas tot que tu cherches, c'est
[caractère séparateur]"toto"[caractère séparateur]
avec [caractère séparateur] = début de chaîne | fin de chaine | blanc |
tabulation
si s4 = "titi toto tutu" c'est ok aussi,
si s5 ="toto" ou " toto" ou "toto " ou " toto " c'est ok
"tototo " c'est pas bon...
je cherche toto, quel que soit sa position dans la chaine
"Guillaume LEMAÎTRE" a écrit dans le message de news:c254kr$89b$
Didier wrote:
bonjour,
je débute en C++ et C tout court d'ailleur;
s1 = "titi tutu tototo" s2 = "titi tutu toto" s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement, comment faut-il faire ? dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas ok, s2
et s3 ok
donc ça n'est pas tot que tu cherches, c'est [caractère séparateur]"toto"[caractère séparateur] avec [caractère séparateur] = début de chaîne | fin de chaine | blanc | tabulation
si s4 = "titi toto tutu" c'est ok aussi, si s5 ="toto" ou " toto" ou "toto " ou " toto " c'est ok
"tototo " c'est pas bon...
je cherche toto, quel que soit sa position dans la chaine
Luc Hermitte
Salut,
"Didier" wrote in news:c25353$lg4$:
s1 = "titi tutu tototo" s2 = "titi tutu toto" s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement, comment faut-il faire ? dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas ok, s2 et s3 ok
A coup de find (méthode de std::string) plus tests de présence d'espaces on doit pouvoir s'en sortir. Il est aussi possible de mettre la mettre dans un istringstream, d'extraire chaque morceau et comparer avec ce qui est recherché. Personnellement, j'opterai plutôt pour la solution des expressions régulières (boost::regex (http://www.boost.org) -- un chouilla complexe à installer pour un débutant peut-être, mais au final un code plus succinct je trouve).
ma deuxième question :
comment faire pour intégrer une chaine dans un tableau ou un vector, exemple : s1 = "25.33 17.34 67.00" les valeurs sont séparée pas des espaces, je voudrait que chaque valeur devienne l'élément d'un tableau.
// On rempli le vecteur de doubles std::vector<double> v; std::copy(std::istream_iterator(iss), std::istream_iterator(), std::back_inserter(v));
// On affiche le vecteur de doubles: std::copy(v.begin(), v.end(), std::ostream_iterator<double>(std::cout, " -- ")); ...
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
Salut,
"Didier" <toto@wanadoo.fr> wrote in
news:c25353$lg4$1@news-reader5.wanadoo.fr:
s1 = "titi tutu tototo"
s2 = "titi tutu toto"
s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement,
comment faut-il faire ?
dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas
ok, s2 et s3 ok
A coup de find (méthode de std::string) plus tests de présence d'espaces
on doit pouvoir s'en sortir.
Il est aussi possible de mettre la mettre dans un istringstream,
d'extraire chaque morceau et comparer avec ce qui est recherché.
Personnellement, j'opterai plutôt pour la solution des expressions
régulières (boost::regex (http://www.boost.org) -- un chouilla complexe à
installer pour un débutant peut-être, mais au final un code plus succinct
je trouve).
ma deuxième question :
comment faire pour intégrer une chaine dans un tableau ou un vector,
exemple : s1 = "25.33 17.34 67.00" les valeurs sont séparée pas des
espaces, je voudrait que chaque valeur devienne l'élément d'un
tableau.
s1 = "titi tutu tototo" s2 = "titi tutu toto" s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement, comment faut-il faire ? dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas ok, s2 et s3 ok
A coup de find (méthode de std::string) plus tests de présence d'espaces on doit pouvoir s'en sortir. Il est aussi possible de mettre la mettre dans un istringstream, d'extraire chaque morceau et comparer avec ce qui est recherché. Personnellement, j'opterai plutôt pour la solution des expressions régulières (boost::regex (http://www.boost.org) -- un chouilla complexe à installer pour un débutant peut-être, mais au final un code plus succinct je trouve).
ma deuxième question :
comment faire pour intégrer une chaine dans un tableau ou un vector, exemple : s1 = "25.33 17.34 67.00" les valeurs sont séparée pas des espaces, je voudrait que chaque valeur devienne l'élément d'un tableau.
// On rempli le vecteur de doubles std::vector<double> v; std::copy(std::istream_iterator(iss), std::istream_iterator(), std::back_inserter(v));
// On affiche le vecteur de doubles: std::copy(v.begin(), v.end(), std::ostream_iterator<double>(std::cout, " -- ")); ...
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
Guillaume LEMAÎTRE
Didier wrote:
"Guillaume LEMAÎTRE" a écrit dans le message de news:c254kr$89b$
donc ça n'est pas toto que tu cherches, c'est [caractère séparateur]"toto"[caractère séparateur] avec [caractère séparateur] = début de chaîne | fin de chaine | blanc | tabulation
si s4 = "titi toto tutu" c'est ok aussi, si s5 ="toto" ou " toto" ou "toto " ou " toto " c'est ok
"tototo " c'est pas bon...
je cherche toto, quel que soit sa position dans la chaine
c'est bien ce que je dis
cherche " toto " dans toute la châine et vérifie si elle commence par "toto " ou si elle se finit par " toto"
Didier wrote:
"Guillaume LEMAÎTRE" <zarmalala@biniou.org> a écrit dans le message de
news:c254kr$89b$1@news-reader3.wanadoo.fr...
donc ça n'est pas toto que tu cherches, c'est
[caractère séparateur]"toto"[caractère séparateur]
avec [caractère séparateur] = début de chaîne | fin de chaine | blanc |
tabulation
si s4 = "titi toto tutu" c'est ok aussi,
si s5 ="toto" ou " toto" ou "toto " ou " toto " c'est ok
"tototo " c'est pas bon...
je cherche toto, quel que soit sa position dans la chaine
c'est bien ce que je dis
cherche " toto " dans toute la châine et vérifie si elle commence par
"toto " ou si elle se finit par " toto"
"Guillaume LEMAÎTRE" a écrit dans le message de news:c254kr$89b$
donc ça n'est pas toto que tu cherches, c'est [caractère séparateur]"toto"[caractère séparateur] avec [caractère séparateur] = début de chaîne | fin de chaine | blanc | tabulation
si s4 = "titi toto tutu" c'est ok aussi, si s5 ="toto" ou " toto" ou "toto " ou " toto " c'est ok
"tototo " c'est pas bon...
je cherche toto, quel que soit sa position dans la chaine
c'est bien ce que je dis
cherche " toto " dans toute la châine et vérifie si elle commence par "toto " ou si elle se finit par " toto"
Didier
Merci pour votre aide, je vai essayer tout çà
Didier
"Luc Hermitte" a écrit dans le message de news:
Salut,
"Didier" wrote in news:c25353$lg4$:
s1 = "titi tutu tototo" s2 = "titi tutu toto" s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement, comment faut-il faire ? dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas ok, s2 et s3 ok
A coup de find (méthode de std::string) plus tests de présence d'espaces on doit pouvoir s'en sortir. Il est aussi possible de mettre la mettre dans un istringstream, d'extraire chaque morceau et comparer avec ce qui est recherché. Personnellement, j'opterai plutôt pour la solution des expressions régulières (boost::regex (http://www.boost.org) -- un chouilla complexe à installer pour un débutant peut-être, mais au final un code plus succinct je trouve).
ma deuxième question :
comment faire pour intégrer une chaine dans un tableau ou un vector, exemple : s1 = "25.33 17.34 67.00" les valeurs sont séparée pas des espaces, je voudrait que chaque valeur devienne l'élément d'un tableau.
// On rempli le vecteur de doubles std::vector<double> v; std::copy(std::istream_iterator(iss), std::istream_iterator(), std::back_inserter(v));
// On affiche le vecteur de doubles: std::copy(v.begin(), v.end(), std::ostream_iterator<double>(std::cout, " -- ")); ...
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
Merci pour votre aide, je vai essayer tout çà
Didier
"Luc Hermitte" <hermitte@free.fr.invalid> a écrit dans le message de
news:Xns94A1C83B3D1D8isyfur@127.0.0.1...
Salut,
"Didier" <toto@wanadoo.fr> wrote in
news:c25353$lg4$1@news-reader5.wanadoo.fr:
s1 = "titi tutu tototo"
s2 = "titi tutu toto"
s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement,
comment faut-il faire ?
dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas
ok, s2 et s3 ok
A coup de find (méthode de std::string) plus tests de présence d'espaces
on doit pouvoir s'en sortir.
Il est aussi possible de mettre la mettre dans un istringstream,
d'extraire chaque morceau et comparer avec ce qui est recherché.
Personnellement, j'opterai plutôt pour la solution des expressions
régulières (boost::regex (http://www.boost.org) -- un chouilla complexe à
installer pour un débutant peut-être, mais au final un code plus succinct
je trouve).
ma deuxième question :
comment faire pour intégrer une chaine dans un tableau ou un vector,
exemple : s1 = "25.33 17.34 67.00" les valeurs sont séparée pas des
espaces, je voudrait que chaque valeur devienne l'élément d'un
tableau.
s1 = "titi tutu tototo" s2 = "titi tutu toto" s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement, comment faut-il faire ? dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas ok, s2 et s3 ok
A coup de find (méthode de std::string) plus tests de présence d'espaces on doit pouvoir s'en sortir. Il est aussi possible de mettre la mettre dans un istringstream, d'extraire chaque morceau et comparer avec ce qui est recherché. Personnellement, j'opterai plutôt pour la solution des expressions régulières (boost::regex (http://www.boost.org) -- un chouilla complexe à installer pour un débutant peut-être, mais au final un code plus succinct je trouve).
ma deuxième question :
comment faire pour intégrer une chaine dans un tableau ou un vector, exemple : s1 = "25.33 17.34 67.00" les valeurs sont séparée pas des espaces, je voudrait que chaque valeur devienne l'élément d'un tableau.
On Wed, 3 Mar 2004 23:37:35 +0100, "Alain Naigeon" wrote:
Je rappelle que le C++ et le C sont deux langages différents.
Hum, finalement oui, mais le nom et la volonté de compatibilité suscitent la confusion chez les nouveaux arrivants !
C'est pour ça que je préfère que ce soit clair tout de suite, quitte à enfoncer des portes ouvertes.
à moins que tu ne considère Basic comme une large extension de Java ?
A priori, non, pour des raisons historiques (Basic est antérieur).
Mais je ne souhaite pas non plus considérer C++ comme une large extension de C, du moins quand je programme (et surtout quand je parle à un débutant).
-- ;-)
Didier
"Luc Hermitte" a écrit dans le message de news:
Salut,
"Didier" wrote in news:c25353$lg4$:
s1 = "titi tutu tototo" s2 = "titi tutu toto" s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement, comment faut-il faire ? dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas ok, s2 et s3 ok
A coup de find (méthode de std::string) plus tests de présence d'espaces on doit pouvoir s'en sortir. Il est aussi possible de mettre la mettre dans un istringstream, d'extraire chaque morceau et comparer avec ce qui est recherché. Personnellement, j'opterai plutôt pour la solution des expressions régulières (boost::regex (http://www.boost.org) -- un chouilla complexe à installer pour un débutant peut-être, mais au final un code plus succinct je trouve).
ma deuxième question :
comment faire pour intégrer une chaine dans un tableau ou un vector, exemple : s1 = "25.33 17.34 67.00" les valeurs sont séparée pas des espaces, je voudrait que chaque valeur devienne l'élément d'un tableau.
// On rempli le vecteur de doubles std::vector<double> v; std::copy(std::istream_iterator(iss), std::istream_iterator(), std::back_inserter(v));
// On affiche le vecteur de doubles: std::copy(v.begin(), v.end(), std::ostream_iterator<double>(std::cout, " -- ")); ...
J'ai testé et c'est génial, j'ai juste dû rajouter le type aux itérators. std::copy(std::istream_iterator<double>(iss), std::istream_iterator<double>(), std::back_inserter(v));
encore merci
didier
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
"Luc Hermitte" <hermitte@free.fr.invalid> a écrit dans le message de
news:Xns94A1C83B3D1D8isyfur@127.0.0.1...
Salut,
"Didier" <toto@wanadoo.fr> wrote in
news:c25353$lg4$1@news-reader5.wanadoo.fr:
s1 = "titi tutu tototo"
s2 = "titi tutu toto"
s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement,
comment faut-il faire ?
dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas
ok, s2 et s3 ok
A coup de find (méthode de std::string) plus tests de présence d'espaces
on doit pouvoir s'en sortir.
Il est aussi possible de mettre la mettre dans un istringstream,
d'extraire chaque morceau et comparer avec ce qui est recherché.
Personnellement, j'opterai plutôt pour la solution des expressions
régulières (boost::regex (http://www.boost.org) -- un chouilla complexe à
installer pour un débutant peut-être, mais au final un code plus succinct
je trouve).
ma deuxième question :
comment faire pour intégrer une chaine dans un tableau ou un vector,
exemple : s1 = "25.33 17.34 67.00" les valeurs sont séparée pas des
espaces, je voudrait que chaque valeur devienne l'élément d'un
tableau.
// On rempli le vecteur de doubles
std::vector<double> v;
std::copy(std::istream_iterator(iss), std::istream_iterator(),
std::back_inserter(v));
// On affiche le vecteur de doubles:
std::copy(v.begin(), v.end(),
std::ostream_iterator<double>(std::cout, " -- "));
...
J'ai testé et c'est génial, j'ai juste dû rajouter le type aux itérators.
std::copy(std::istream_iterator<double>(iss),
std::istream_iterator<double>(), std::back_inserter(v));
encore merci
didier
--
Luc Hermitte <hermitte at free.fr>
FAQ de <news:fr.comp.lang.c++> :
<http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/>
Dejanews : <http://groups.google.com/advanced_group_search>
s1 = "titi tutu tototo" s2 = "titi tutu toto" s3 = "titi tutu toto " (un espace à la fin)
je recherche la chaine "toto" exclusivement, comment faut-il faire ? dans s1 il y a bient tototo, mais c'est toto que je cherche, s1 pas ok, s2 et s3 ok
A coup de find (méthode de std::string) plus tests de présence d'espaces on doit pouvoir s'en sortir. Il est aussi possible de mettre la mettre dans un istringstream, d'extraire chaque morceau et comparer avec ce qui est recherché. Personnellement, j'opterai plutôt pour la solution des expressions régulières (boost::regex (http://www.boost.org) -- un chouilla complexe à installer pour un débutant peut-être, mais au final un code plus succinct je trouve).
ma deuxième question :
comment faire pour intégrer une chaine dans un tableau ou un vector, exemple : s1 = "25.33 17.34 67.00" les valeurs sont séparée pas des espaces, je voudrait que chaque valeur devienne l'élément d'un tableau.
// On rempli le vecteur de doubles std::vector<double> v; std::copy(std::istream_iterator(iss), std::istream_iterator(), std::back_inserter(v));
// On affiche le vecteur de doubles: std::copy(v.begin(), v.end(), std::ostream_iterator<double>(std::cout, " -- ")); ...
J'ai testé et c'est génial, j'ai juste dû rajouter le type aux itérators. std::copy(std::istream_iterator<double>(iss), std::istream_iterator<double>(), std::back_inserter(v));
encore merci
didier
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>