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 :

probl�me avec le type string


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Par d�faut probl�me avec le type string
    Voil� mon code

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    unsigned short *value;
    string str=""
     
    value = (unsigned short *) &str[0];
    *value = 2007;
    value = (unsigned short *) &str[2];
    *value = 08;
    value = (unsigned short *) &str[4];
    *value = 24;
     
    cout<<str;
    Mon probl�me est le suivant :
    je dispose d'une string vide que je souhaite remplir. Pour cela j'utilise un pointeur qui va se d�placer le long de ma string.
    Enfin je souhaite afficher la string enti�re sauf qu'en fait rien ne s'affiche.

    Est-ce que vous auriez une id�e qui pourrait m'aider � r�soudre mon probl�me.

    Merci par avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    29
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <iostream>
    #include <sstream>
     
    using namespace std;
     
    int main()
    {
        stringstream sstr;
        sstr << "2007" << "08" << "24";
        cout << sstr.str();
     
        return 0;
    }
    Perso j'envoi tous dans sstr et je recupere une string avec la methode str().
    Y a peu-etre plus simple...

  3. #3
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par d�faut
    Je ne sais pas exactement ce que tu cherches � faire, je vois que tu utilises string d'un c�t� (cha�ne de caract�re) et que de l'autre tu utilises des entiers.

    En tout cas, �a, �a marche, m�me si je ne sais pas si �a r�pond � ta quesion :

    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 <iostream>
    #include <string>
     
    int main()
    {
        std::string str;
        str += "2007";
        str += "/";
        str += "08";
        str += "/";
        str += "24";
        // Ou plus simplement : str = "2007/08/24";
     
        std::cout << str.c_str() << std::endl; // Si on inclut pas <string>
        std::str << str << std::endl; // Si on inclut <string>
     
        system("pause");
        return 0;
    }
    Attention � quelque chose comme str += 12, genr� essayer de rentrer un nombre dans une cha�ne, car il va essayer d'interpr�ter ce nombre comme la valeur d'un caract�re, avec des r�sultats assez �ratiques ; si tu veux prendre un entier et l'ajouter comme cha�ne � une string, passe par la proc�dure itoa() (en C).

  4. #4
    Membre �m�rite
    Avatar de Spout
    Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    F�vrier 2007
    Messages
    904
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France, Val d'Oise (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 904
    Par d�faut
    Ce n'est pas comme cela qu'on modifie un string!
    Qu'y aura-t-il d'apr�s toi aux positions 1 et 3? De plus, tu ne peux pas acc�der pas au caract�res 0, 2 et 4 si ton string est vide.
    Utilises plut�t assign(), append() pour lui donner du contenu, et at() ou [] pour y acc�der.

    Tu ne peux pas modifier comme �a un caract�re. Pour ce faire, soit tu passes par un iterator, at() ou [], et tu modifies ton caract�re. En aucun cas par un pointeur (tu ne sais pas comment le container est g�r�). De plus, str[x] ne te renvoie pas une adresse, mais un string::reference, ce qui n'est pas du tout la m�me chose.

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Par d�faut
    Pourtant si j'affiche par exemple str[0]
    j'ai bien la valeur 2007 qui s'affiche.

    EDIT : je l'ai pas pr�cis� mais j'utilise le type string de la librairie ptypes

  6. #6
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 297
    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 297
    Billets dans le blog
    2
    Par d�faut
    nul besoin de chercher midi � 14h: en c++, pour convertir quelque chose en string on utilise les stringstream, comme l'a montr� fafacpp.

    Cela dit, je viens de jeter un coup d'oeil � la doc de ptypes (int�ressant, je ne connaissais pas), et la classe string fourni les fonctionalit�s dont tu as besoin: http://www.melikyan.com/ptypes/doc/s...onversion.html

    Par exemple:
    string itostring(<ordinal> value);

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Par d�faut
    Ce que je comprend pas c'est que case par case (str[0], str[2]) cela affiche ce que je veux. Maus quand j'affiche la string enti�re (str), j'ai rien.

  8. #8
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 297
    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 297
    Billets dans le blog
    2
    Par d�faut
    Ce n'est peut-�tre pas �a, mais au cas o�:
    si tu fais juste:
    il y a de grands risques pour que rien ne s'affiche effectivement. Il faut faire un flush (forcer la sortie du buffer de l'objet cout dans la console). Et on fait �a, g�n�ralement, avec un endl (endl a un double effet: retour � la ligne + flush):
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    std::cout << str << std::endl;
    hope it helps.

  9. #9
    Membre �m�rite
    Avatar de Spout
    Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    F�vrier 2007
    Messages
    904
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France, Val d'Oise (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 904
    Par d�faut
    Il y a certainement un conflit entre le std::string de la STL et le string de ptypes au moment du passage � std::cout.
    Comment std::cout peut-il accepter en entr�e un string de ptypes � la compilation sans passer par un cast?

    Personnellement j'�vite de mixer les librairies � moins de ne pas avoir le choix et de maitriser les diff�rents liens entre elles.

    Essaye �ventuellement:

  10. #10
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    Citation Envoy� par remooz Voir le message
    Voil� mon code

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    unsigned short *value;
    string str=""
     
    value = (unsigned short *) &str[0];
    *value = 2007;
    value = (unsigned short *) &str[2];
    *value = 08;
    value = (unsigned short *) &str[4];
    *value = 24;
     
    cout<<str;
    Ton code invoque des comportements non d�finis.
    1) Il n'est pas autoris� de lire un caract�re � un index d'une cha�ne sup�rieur � sa taille (tout indice tout toujours �tre strictement � inf�rieur � la taille de la cha�ne)
    Une bonne impl�mentation de la biblioth�que standard devrait te cracher � la gueule en mode debug.
    2) Caster un T1* en un T2* a un r�sultat non sp�cifi�, et est non d�fini quand l'objet point� par T1* n'existe pas et/ou quand la m�moire point� ne satisfait pas les pr�-requis d'alignement et de taille de T2.

    Ensuite, il est clair que m�me si �a marchait, �a ne ferait pas du tout ce que tu crois que �a fait.
    Le short 2007 (octets 0xd7 0x07 en little-endian), ce n'est pas la m�me chose que la cha�ne "2007" (octets 0x32 0x30 0x30 0x37 0x00).

Discussions similaires

  1. Probl�me avec le type BLOB dans oracle
    Par pguedia dans le forum Oracle
    R�ponses: 1
    Dernier message: 10/11/2005, 17h33
  2. probl�me avec le type timestamp
    Par aline dans le forum Oracle
    R�ponses: 6
    Dernier message: 21/02/2005, 10h05
  3. probl�me avec une date/string dans un CommandText
    Par critok dans le forum Bases de donn�es
    R�ponses: 5
    Dernier message: 09/02/2005, 15h30
  4. [D�butant][Phppgadmin] probl�me avec les types
    Par PoY dans le forum PostgreSQL
    R�ponses: 3
    Dernier message: 19/08/2004, 17h06
  5. Probl�me avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    R�ponses: 2
    Dernier message: 14/07/2002, 18h48

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