Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1567 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Extraire des variables à partir d'une chaine de caractère

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Extraire des variables à partir d'une chaine de caractère

n°1727073
sebdu94
Posté le 30-04-2008 à 19:36:38  profilanswer
 

Alors voici ma deuxième question ;)
 
En fait je crois savoir qu'il est possible d'obtenir des variables à partir d'une chaine de caractère.
Je m'explique :
 
imaginons qu'on ai une chaine de caractère :    
char tableau[15] qui contient   "123 modele 954" et bien sur "\0"
 
Comment faire pour stocker 123 dans un int, modele dans une autre chaine de caractère et 954 dans un int ?
Il me semble qu'il est possible de faire (avec une fonction que je ne connais pas) : "%d %s %d" pour indiquer le type des variables.
 
J'espère que vous m'avez bien compris.
 
Merci d'avance.
 
 
PS : j'ai bien pensé a faire un strlen sur la chaine et utiliser les fonctions atof() mais le problème c'est que la longueur de la chaine peut grandement varier

mood
Publicité
Posté le 30-04-2008 à 19:36:38  profilanswer
 

n°1727077
Joel F
Real men use unique_ptr
Posté le 30-04-2008 à 19:46:11  profilanswer
 

std::ostringstream

n°1727105
sebdu94
Posté le 30-04-2008 à 22:07:24  profilanswer
 

Merci beaucoup.
 
Par contre ce n'est pas plutot istringstream ?
Et ça marche avec les tableaux de caractères ou que sur les string ?

n°1727109
sebdu94
Posté le 30-04-2008 à 22:14:26  profilanswer
 

Et est-ce qu'il est possible de faire une fonction qui lit les entiers d'une ligne tant qu'il n'atteint pas un zéro ?
 
Encore désolé pour ces questions de débutant.
 
Je vais essayer de faire un code.

n°1727117
Joel F
Real men use unique_ptr
Posté le 30-04-2008 à 22:25:46  profilanswer
 

istringstream oui
 
sinon si tu as des trucs compelxes, boost::regex

n°1727119
sebdu94
Posté le 30-04-2008 à 22:30:07  profilanswer
 

J'ai tenté comme ça mais il y a une erreur de compilation :
 

Code :
  1. istringstream stream1;
  2.         int initial = -1;
  3.         while(initial != 0)
  4.         {
  5.         int i = 0;
  6.         string string1(m_fichier[1][i]);
  7.         stream1.str(string1);
  8.         stream1 >> initial;
  9.         cout << "initial_1 : " << initial << endl; system("PAUSE" );
  10.         stream1.str( "" );
  11.         stream1.clear();
  12.         i = i+2;
  13.         }


 
 
La ligne de texte se présente comme ceci :

Citation :


1 2 0                 ou
10 23 35 733 0    ou
1 0                    ou
0                      ou


Message édité par sebdu94 le 30-04-2008 à 22:32:31
n°1727129
sebdu94
Posté le 30-04-2008 à 23:34:23  profilanswer
 

J'ai trouvé !!! :D

n°1728029
jesus_chri​st
votre nouveau dieu
Posté le 03-05-2008 à 17:20:13  profilanswer
 

Citation :

Il me semble qu'il est possible de faire (avec une fonction que je ne connais pas) : "%d %s %d" pour indiquer le type des variables.


sscanf()
 
Fonction très puissante (elle sait même faire qlq expressions régulières simples comme [a-z]+ ou [^0-9]{3}) mais très complexe et à n'utiliser que si on sait exactement ce que l'ont fait.
Plus puissante que std::istringstream mais moins gracieuse, plus complexe... et pur C
boost::regex c'est le top mais il faut se trinbaler boost, or ton problème semble être un exo d'étudiant, boost ça fait un peu lourd juste pour ça.
 
un exellent article sur sscanf qui peut bien souvent remplacer boost::regex dans des cas simples :
http://xrenault.developpez.com/tutoriels/c/scanf/

n°1728068
Joel F
Real men use unique_ptr
Posté le 03-05-2008 à 19:49:30  profilanswer
 

pur C oui mais le topic est dans la cat. C++ :o

n°1728091
jesus_chri​st
votre nouveau dieu
Posté le 03-05-2008 à 21:23:50  profilanswer
 

mais il n'y a pas d'équivalent à sscanf en vrai C++, donc ça reste pertinent de s'en servir pour les expressions régulières. Après si c'est pour lire un simple entier, je plussoie le istringstream ;)

mood
Publicité
Posté le 03-05-2008 à 21:23:50  profilanswer
 

n°1728096
Joel F
Real men use unique_ptr
Posté le 03-05-2008 à 22:03:13  profilanswer
 

je reve d'un boost::format pour les entrées et non les sorties en fait


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Extraire des variables à partir d'une chaine de caractère

 

Sujets relatifs
[Resolu] Création de rapport rdlc à partir d'une base de donnée MySql[REGEXP] chaine ne contenant pas une sous-chaîne
[Résolu] Variables de Variables ...Empecher la conversion des caractère
Déclaration dynamique d'un tableau de chaine de caractèreschanger une valeur de radio à partir d'un texte - devis en ligne
Segmentation fault sur chaine de caractère. BizarrrreComment trier des chaines de caractère dans un tableau ?
Formulaire rempli a partir du lien 
Plus de sujets relatifs à : Extraire des variables à partir d'une chaine de caractère


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR