Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : trouver un char dasn une string et le convertir... [ Archives / Divers ] (Spiffou)

jeudi 3 février 2005 à 20:43:17 | trouver un char dasn une string et le convertir...

Spiffou

bonjour à tous,

je suis bloqué sur un problème de C++ avec les strings et les vectors.
j'ai un vector contenant des std::string, et je souhaiterais extraire de ces strings un de leur caractere afin de le convertir en int.
en gros j'ai string s="mot 1";
et je veux arriver à la fin à int x avec x=1, sachant que ma string est contenue dans un vector.

voila ce que j'ai fait qui ne marche pas:
    vector<string> strvect;
    char * debut;
    debut = (char*)malloc(50*sizeof (char));
    char * buffer;
    buffer = (char*)malloc(50*sizeof (char));

    debut = strdup("mot1 mot2 mot3 mot4 mot5");

// remplissage du vector
    buffer = strtok(debut, " ");
    while (buffer != NULL)
    {
        strvect.push_back(buffer);
        buffer = strtok(NULL, " ");
    }

    for (int i=0;i<5;i++)
    {
        cout<<strvect[i]<<endl;
    }

    // recuperation du numero de chaque mot
    char c;
    string s;
    s = strvect.pop_back();
    cout<<s;
    strcpy(buffer , s.c_str());
    c = s[3];
    printf("xx->%c\n",c);


ps: je vois bien que s ne recoit pas la bonne valeur et declenche le crash mais je ne sais pas comment faire...
si quelqu'un peut m'aider ca serait bien sympa de sa part.

Merci d'avance à vous.

jeudi 3 février 2005 à 21:15:12 | Re : trouver un char dasn une string et le convertir...

bayeto

Membre Club
deux chose d'abord: inutile d'allouer de la mémoire pour debut et buffer. Par contre il faut libérer debut par un free puisque tu appelle strdup.

Je te propose cette boucle:

for(int i=0;i<5;i++)
{
   string &s = strvect[i];
   int c = (int) s[3] - '0';
   cout<< strvect[i] << " x=" << c
<< endl;
}


jeudi 3 février 2005 à 23:09:44 | Re : trouver un char dasn une string et le convertir...

anarchysniper

Bete question : pourquoi un vector ?

C'est tellement plus compliqué qu'un tableau !

Je n'ai jamais trouvé d'avantage à ce système ...

Il doit il y en avoir un mais il m'échappe !

Quelqu'un pourrait-il m'éclairer ?

jeudi 3 février 2005 à 23:11:31 | Re : trouver un char dasn une string et le convertir...

Spiffou

avantage du vector empiler et depiler dynamiquement des elements c'est dejà pas mal non?
pour les autres j suis pas un pro du vector.
^^

jeudi 3 février 2005 à 23:18:10 | Re : trouver un char dasn une string et le convertir...

anarchysniper

Oui mais quelques procédures simple peuvent permettre à un tableau d'imiter ce comportment, sans les ennuis d'allocation de mémoire inhérents aux vecteurs.

vendredi 4 février 2005 à 14:00:10 | Re : trouver un char dasn une string et le convertir...

Atmaweapon

le truc, c'est que les "quelques procédures" sont déjà implémentées dans les vector ... autant ne pas réinventer la roue...

de plus, il doit exister des modèles permettant de spécifier une 'bonne' taille a chaque réallocation de maniere a trouver un compris entre 'temps jusqu'a la prochaine réallocation' et 'espace mémoire utilisé'


samedi 5 février 2005 à 16:14:37 | Re : trouver un char dasn une string et le convertir...

steve_clamage

il n'y a que des avantage à utiliser std::vector quand la taille n'est pas connue (quand elle est il est naturellement plus performant d'utiliser un tableau)

std::vector permet comme ca l'a été dit d'empiler/de dépiler les éléments de facon tres optimisée et en garantissant un temps d'accés constant (tableau dynamique en interne). Un deque permet en plus d'empiler/de dépiler au début (double ended queue) mais avec un temps d'accés légerement superieur et sans reserve de mémoire possible (peut etre implementer avec une liste de tableaux).

string s = "mot 1";
istringstream iss( s, s.find(' ') );
int x;
iss >> x



Cette discussion est classé dans : buffer, string, char, vector, debut


Répondre à ce message

Sujets en rapport avec ce message

Pb vector de vector de char ! [ par nicolas66 ] Ben g un pti pb avec ce prog en Cpp, à la compile ca passe mé à l'execution ca plante !! si vous savé pk merci d'avance !(c censé initialisé un buffer char* -> string [ par oRTEEZ ] Voila tout est dans le sujet.En fait j'ai un nom de fichier dans un buffer et j'aimerai ajouter des caractere au nom.ex: *buffer = "voila.jpg"apres tr taille chaine de char [ par langedechu ] Salut , voila mon prob (je sais plus comment faire) :j'ai une variable : const char *buffer; et j aimerais savoir le nombre de caractere stocker dans recv() et du brol [ par epoc ] hum... encore moi!g un petit prob avec la fonction recv() ou send(), je c pas trop.dans mon client j'ai ça :char *buffer = new char[1024];buffer="NEW Visual C++ Free() [ par PRZYBYLSKI ] #include #include #include "stdafx.h"Question au Pro?Qu'es qui est faux docteurArrivé à free ça bombe#include <io Conversion "system::string __gc *" vers "char *"....HELP [ par starkrous ] oui ce cher "name" dans Fileinfo ne se presente pas sous une forme chaine de caractere...du coup ça m'empeche un peu de le manipuler, est ce qu'il y a pb malloc [ par youpiyoyo ] d'apres msdn char *string; /* Allocate space for a path name */ string = malloc( _MAX_PATH );deja ca chez moi ca compil pas me compilo me di impos Fuite de mémoire pas bien mechante mais suante [ par Trollien ] Bonjour,j'approfondi mais diverses connaissances en c++ et je suis tombé sur un phénomène bien connu et plutôt génant dans une application temps réel. conversion d'une string en n'importe koi d'autre [ par briscard ] Salut a tous!je me pose une petite question sur comment utiliser de la donnée:j'ai un petit programme pour récupérer des courbes d'un appareil de mesu Probleme converssion [ par zzzzzz ] <img src=/imgs2


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 2,605 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.