IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

utiliser tokenize sur une CString


Sujet :

Langage C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut utiliser tokenize sur une CString
    Bonjour,
    Je cherche a faire une fonction pour récupérer la fin d'une url
    par exemple:

    CString url = " www.developpez.net/test.zip";

    je souhaiterai recuperer la chaine de caractère après le dernier /
    donc ici recuperer "test.zip"

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    WinHttpCrackUrl ?

    Pas très portable (Microsoft) mais efficace
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    apparemment c'est ce qui me conviendrai mais j'arrive a comprendre comment l'utiliser , même en regardant la documentation de msdn

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    tu lui passes en entrée ta chaine, la longueur de la chaine, des flags, un pointeur sur une structure URL_COMPONENTS (il faut renseigner la taille avant l'appel). Si le code de retour est bon, la structure URL_COMPONENTS contient les différents champs de ton url

    tien, un petit exemple d'une classe à moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    bool ParseUrl(MCR_CSTR Url,
    		CString & ServiceType,
    		CString & Server,
    		CString & Object,
    		MCR_U2 & Port)
    {
    	// initialize the returned data
    	ServiceType = EMPTY_STR;
    	Server = EMPTY_STR;
    	Object = EMPTY_STR;
    	Port = 0;
     
    	// Initialize the URL_COMPONENTS structure.
    URL_COMPONENTS urlComp;
    	memset(&urlComp, 0, sizeof(urlComp));
    	urlComp.dwStructSize = sizeof(urlComp);
     
    	// Set required component lengths to non-zero so that they are cracked.
    	urlComp.dwSchemeLength		= -1;
    	urlComp.dwHostNameLength	= -1;
    	urlComp.dwUrlPathLength		= -1;
     
    	// parse the URL
    	if(WinHttpCrackUrl(Url, _tcslen(Url), 0, & urlComp) == FALSE)
    	{
    		ERREUR(L"An error in WinHttpCrackUrl()");
    		ASSERT(FALSE);
    		return false;
    	}
     
    	// return the values
    	Port = urlComp.nPort;
     
    	// get the scheme
    	if(urlComp.dwSchemeLength != 0)
    	{
    		ServiceType = CString(urlComp.lpszScheme, urlComp.dwSchemeLength);
    	}
     
    	// get the server
    	if(urlComp.dwHostNameLength != 0)
    	{
    		Server = CString(urlComp.lpszHostName, urlComp.dwHostNameLength);
    	}
     
    	// get the url
    	if(urlComp.dwUrlPathLength != 0)
    	{
    		Object = CString(urlComp.lpszUrlPath, urlComp.dwUrlPathLength);
    	}
     
    	return true;
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Je dis peut etre une betise mais si tu veux recupere juste ce qu'il y a avant / dans une URL tu peux facilement le faire uniquement avec les methode de la classe CString.
    Tu fais une recherche du caractere "\" avec la fonction ReverseFind et apres tu decoupes la chaine a partir du caractere qui t'interresse avec Mid() ou Right() par exemple.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    merci
    mais j'ai un problème si j'ai
    http://www.developpez.net/forums/blabla/test.exe

    Object = CString(urlComp.lpszUrlPath, urlComp.dwUrlPathLength);

    Object me recupere "/forums/blabla/test.exe"
    alors que je voudrais que test.exe

  7. #7
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Tu as essayé juste en manipulant des CString ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    oui ,
    mais avec Right , il faut précisé le nombre de caractère qu'on veut prendre et je voudrais éviter cela , je souhaiterai que sa prenne tous les caractères après le dernier "/"

  9. #9
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Citation Envoyé par misakilou Voir le message
    oui ,
    mais avec Right , il faut précisé le nombre de caractère qu'on veut prendre et je voudrais éviter cela , je souhaiterai que sa prenne tous les caractères après le dernier "/"
    Quelque chose comme cela fonctionne ou pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CString url = "www.developpez.net/test.zip";
    CString EndUrl = url.Mid(url.ReverseFind('/')+1);
    J'ai pas testé le code mais avec quelque ajustement cela devrait fonctionner.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    ah ben oui
    j'avais trouvé une autre solution entre temps

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CString url = "www.developpez.net/test.zip";
    CString split;
     
    int lengh = url.Getlengh(); // on récupère la longueur
    int find = url.ReverseFind('/');
    split = url.Right( lengh - find - 1);
    mais ta méthode est beaucoup mieux

    Je vous remercie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment utiliser usemap sur une image png transparente
    Par master_kb2 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/01/2008, 14h00
  2. Réponses: 1
    Dernier message: 27/03/2007, 14h07
  3. [FLASH 8] Creer/utiliser/réfléchir sur une bibli de fonction externe !?
    Par Lorenzo77 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 16/01/2007, 13h35
  4. Réponses: 7
    Dernier message: 18/04/2006, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo