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

C++ Discussion :

Impl�menter sa propre fonction split()


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Invit�
    Invit�(e)
    Par d�faut Impl�menter sa propre fonction split()
    Bonjour � tous,
    Il existe en Python 3 une fonction str().split() qui sert � d�couper une cha�ne en fonction de son s�parateur.
    J'ai r�ussi � en impl�menter une avec un s�parateur de type char, mais je bloque pour faire une surcharge avec cette fois un s�parateur de type std::string (pour avoir plusieurs caract�res).
    J'aimerais juste un algorithme d�taill� pour savoir comment m'y prendre (je m'occupe de le traduire en c++).

    Si �a peut servir, voici le code de ma fonction avec un s�parateur char :
    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
    #include <vector>
    #include <string>
     
    std::vector<std::string> couper_chaine(std::string const chaine, char const separateur = ' ') {
    	std::vector<std::string> tableau;
    	std::string element = "";
    	for (auto i = 0lu; i < chaine.size(); i++) {
    		if (chaine[i] != separateur) {
    			element += chaine[i];
    		}
    		else if (chaine[i] == separateur && element != ""){
    			tableau.push_back(element);
    			element = "";
    		}
    		if (i == chaine.size() - 1 && element != "") {
    			tableau.push_back(element);
    		}
    	}
    	return tableau;
    }

  2. #2
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par d�faut
    Tu te prends la t�te pour rien et en plus cela ressemble + � du C

    Il faut faire 1 truc proche de :
    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
    #include <iostream>
    #include <string>
    #include <vector>
     
    #include <cstdlib>
     
     
    const unsigned char G_SEPARATOR_CHAR = ';';
     
     
    int main()
    {
        std::vector<std::string> array;
    //  std::string str("15;toto;tata;azerty;35;");
        std::string str("15;toto;tata;azerty;35");
        std::size_t found      = str.find_first_of(G_SEPARATOR_CHAR),
                    last_found = 0,
                    tmp_size   = str.length();
     
        while (found != std::string::npos) {
            array.push_back( str.substr(last_found, (found - last_found)));
            last_found = (found + 1);
            found = str.find_first_of(G_SEPARATOR_CHAR, last_found);
        }
     
    //  Test if one last element is present
        if (last_found < tmp_size) {
            array.push_back( str.substr(last_found, (tmp_size - last_found)));
        }
     
    //  XXX DEBUG: display array
        for(found=0, tmp_size=array.size(); found < tmp_size; ++found) {
            std::cout << (found + 1) << ": " << array[found] << std::endl;
        }
     
     
        return EXIT_SUCCESS;
    }

  3. #3
    Invit�
    Invit�(e)
    Par d�faut
    Merci pour la r�ponse, en effet �a ressemble � du C (j'ai essay� de me passer des fonctions de la STL), mais je n'ai pas trop r�ussi.
    J'ai trouv� une solution sur StackOverflow.
    D�sol� pour le d�rangement et encore merci

  4. #4
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par d�faut
    Citation Envoy� par totosayen Voir le message
    D�sol� pour le d�rangement et encore merci
    Tu m'�tonnes le d�rangement le gars "pose la solution" mais j'ai donn� la m�me solution 1 jour avant.

  5. #5
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  6. #6
    Invit�
    Invit�(e)
    Par d�faut
    Citation Envoy� par foetus Voir le message
    Tu m'�tonnes le d�rangement le gars "pose la solution" mais j'ai donn� la m�me solution 1 jour avant.
    Oui oui, je sais mais j'ai pas compris tout de suite comment �a a march� donc et je me suis un peu renseign� sur les fonctions utilis�es (le prenez pas mal).

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 5
    Dernier message: 13/10/2005, 12h46
  2. [String] fonction split
    Par tck-lt dans le forum Langage
    R�ponses: 2
    Dernier message: 19/07/2005, 17h45
  3. procedure stock�e et fonction "split"
    Par wehtam dans le forum MS SQL Server
    R�ponses: 2
    Dernier message: 18/07/2005, 16h21
  4. [XML+XSLT+MSXML] Ecrire ses propres fonctions
    Par g�rgh dans le forum XSL/XSLT/XPATH
    R�ponses: 6
    Dernier message: 19/05/2005, 13h04
  5. [Fortran 90] Fonction Split()
    Par gchazelle dans le forum Fortran
    R�ponses: 2
    Dernier message: 02/03/2005, 10h16

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