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

SL & STL C++ Discussion :

decoupage chaine de caractere


Sujet :

SL & STL C++

  1. #1
    Membre confirmé Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Par défaut decoupage chaine de caractere
    salutation,

    alors je sais, je sais: c'est un problème abordé plusieurs fois, dans la faq, dans le forum, partout... Cependant, j'ai des soucis pour découper comme je le souhaiterai. Je m'explique:

    j'ai un nom de fichier de ce type:ce qui correspond au jour d'aujourd'hui par exemple (le 06 septembre 2007) et l'heure (12h57). J'ai besoin de récupérer toutes ces infos dans des variables séparé: l'heure, les minutes, les secondes, le jour, le mois et l'année. Car par la suite, je dois chercher dans un autre fichier texte la ligne qui correspond. Ce dernier fichier est de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    06:09:07     12:57:04    nombre1 nombre2
    tous ca pour récupérer le nombre1 et 2 !!!

    Alors voila, j'ai cherché et du coup, je sais plus quoi faire: passer en entier et decouper les dizaines, les milliers...? Bref, je suis un peu perdu. Donc si vous pouvez me donner un petit coup de main...
    Merci pour votre aide

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Si tu veux te simplifier la vie, tu peux jeter un coup d'oeil à la fonction strptime (dans <ctime>), si elle existe sur ta plateforme, à vérifier. Cette fonction te permet de construire une structure spécifiant heure minute seconde jour mois année... en spécifiant un format de données.

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Le plus simple est de juste decouper le nom de fichier en sous-chaines
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    std::string nom("060907_125704.jpg");
    std::string jour(nom.substr(0, 2));
    std::string mois(nom.substr(2, 2));
    std::string annee(nom.substr(4, 2));
    std::string heure(nom.substr(7, 2));
    std::string min(nom.substr(9, 2));
    std::string sec(nom.substr(11, 2));
    std::string date(jour + ':' + mois + ':' + annee); // 06:09:07
    std::string temps(heure + ':' + min + ':' + sec); // 12:57:04
    Reste plus qu'a rechercher les chaines date et temps dans le fichier (et a gérer les cas d'erreurs).

  4. #4
    Membre confirmé Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Par défaut
    petite précision supplémentaire, il faut que ce soit multiplateforme (Win, Mac, Linux) !!


    EDIT: bon sang je l'ai vu nul part cette fonction substring!! Merci c'est ce que je cherchais. Rendez vous au prochain numéro si j'ai d'autres soucis!

  5. #5
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    résolu?

  6. #6
    Membre confirmé Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Par défaut
    ca c'est énorme! Juste a l'instant! je viens de finir ma fonction de recherche!! j'avais un bug a la con... vu que j'avais ecrit n'importe quoi
    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
    std::string		line, dateF, tempsF;
    	int match1 = -1, match2=-1;
     
    	// il faut commencer par decouper le nom du fichier image
    	std::string jour(nomImage.substr(0, 2));
    	std::string mois(nomImage.substr(2, 2));
    	std::string annee(nomImage.substr(4, 2));
    	std::string heure(nomImage.substr(7, 2));
    	std::string min(nomImage.substr(9, 2));
    	std::string sec(nomImage.substr(11, 2));
    	std::string date(jour + '/' + mois + '/' + annee); 	std::string temps(heure + ':' + min + ':' + sec);
     
    	// ouverture du fichier
    	std::ifstream fichierInput( nomFichier ); 
     
    	// verification
    	if (!fichierInput)
    	{
    		std::cout << "\nt'es dans le caca avec ton fichier\n"; 
    		fichierInput.close();
    	}
    	else
    	{
    		// on tente un truc rapide -> on met tout dans un buffer
    		std::stringstream buff;
    		buff << fichierInput.rdbuf();
    		// plus besoin du fichier donc
    		fichierInput.close();
    		// tant qu'on trouve pas l'heure 
    		while (std::getline(buff, line)  &&  match2!=0)
    		{
    			std::istringstream iss( line );
    			iss >> dateF >> tempsF >> pos.x >> pos.y;
    			match1 = date.compare(dateF);
    			match2 = temps.compare(tempsF);
    			//if (match2 == 0) std::cout << "\n" << dateF << "  " << date <<  "  " << tempsF <<  "  " << temps << "  " << match1  << "  " << match2;
    		}
    		// on supprime le buffer
    		buff.flush();
    	}

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Citation Envoyé par shams Voir le message
    EDIT: bon sang je l'ai vu nul part cette fonction substring!! Merci c'est ce que je cherchais. Rendez vous au prochain numéro si j'ai d'autres soucis!
    http://www.cppreference.com/cppstring/index.html

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

Discussions similaires

  1. Decoupage d'une Chaine de caractere
    Par padrinoba dans le forum Général Java
    Réponses: 1
    Dernier message: 21/07/2010, 13h54
  2. [Débutant] decoupage d'une chaine de caracteres avec la commande strread
    Par jeune informatique dans le forum MATLAB
    Réponses: 4
    Dernier message: 11/05/2010, 13h49
  3. decoupage d'une chaine de caractere
    Par julinho99 dans le forum Débuter
    Réponses: 13
    Dernier message: 24/09/2008, 15h23
  4. Decoupage chaine de caracteres
    Par Katachana dans le forum Langage
    Réponses: 3
    Dernier message: 12/03/2008, 17h58
  5. [MySQL] probleme decoupage chaine de caractere
    Par mahfout_i dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/03/2006, 18h57

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