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 :

probleme avec string


Sujet :

C++

  1. #1
    Membre régulier Avatar de elghadi_mohamed
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Points : 89
    Points
    89
    Par défaut probleme avec string
    bonjour

    j'ai essaye d'ecrire un petit code pour l'affichage d'une chaine:

    mais ça ne marche pas il m'ecrit que le probleme est au niveau de cout!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int main()
    {
    	string a="elhadramiy wedoud";
    	cout << a <<"\n" << endl;
    	return 0;
    }
    Soit A un succès dans la vie. Alors A = x + y + z, où x = travailler, y = s'amuser, z = se taire.

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Tu as bien mis les include est les using namespace que ton code demande ?

    PS : endl passe déjà à la ligne, pas besoin de "\n".
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre régulier Avatar de elghadi_mohamed
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Points : 89
    Points
    89
    Par défaut probleme avec string
    j'ai bien ajoute les fichiers d'entete et voici le debut du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <iostream>
     
    using namespace std;
    et merci pour la remarque
    Soit A un succès dans la vie. Alors A = x + y + z, où x = travailler, y = s'amuser, z = se taire.

  4. #4
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Il faut inclure #include <string> si tu veux utiliser des objets string.

  5. #5
    Membre confirmé Avatar de aziz jim
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 455
    Points : 567
    Points
    567
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include"iostream"
    #include"string"
     
    using namespace std;
     
    int main()
    {
    string a="elhadramiy wedoud";
    cout << a << endl;
    system("pause");  // si à l'exécution ça ne reste en écran que moin d'un ;) 
    }
    Ce n'est qu'en forgeant qu'on devient forgeron.

  6. #6
    Membre confirmé
    Avatar de NewbiZ
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2002
    Messages : 184
    Points : 563
    Points
    563
    Par défaut
    Avec des <>, des () au lieu de la trompeuse utilisation de =, et une utilisation du namespace explicite (std::cout) je suis d'accord :p

  7. #7
    Membre confirmé Avatar de toxcct
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 434
    Points : 511
    Points
    511
    Par défaut
    Citation Envoyé par aziz jim
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include"iostream"
    #include"string"
     
    using namespace std;
     
    int main()
    {
    string a="elhadramiy wedoud";
    cout << a << endl;
    system("pause");  // si à l'exécution ça ne reste en écran que moin d'un ;) 
    }
    il est déconseillé d'utiliser une using namespace ayant une portée sur tout le module de traduction. il est préférable d'utikiser une telle directive dans une fonction ou dans un bloc interne a une fonction.

    par ailleur, quand on insere un en-tete du compilateur, on le fait avec un #include <...> et non pas un #include "...". la notation <> significe au compilateur que le fichier est dans son dossier d'installation, alors que l'utilisation des "" signifie que le fichier est un fichier du projet.

    enfin, il est préférable d'utiliser des méthodes standard plutot que des appels spécifiques au systeme d'exploitation. en d'autres mots, system("pause") ne marchera que sous windows, alors qu'un appel a getch() marchera sur toutes les plateformes (en pensant bien sur a faire un #include<conio.h> préalable).

    elghadi quant à toi, quand tu dis :
    mais ça ne marche pas il m'ecrit que le probleme est au niveau de cout!!
    certes, si tu le dis, c'est que c'est surement vrai. mais nous de notre coté, on n'a aucune idée du message (exact) que le compilo t'as envoyé, donc si tu peux nous éviter l'usage des boules de cristal ...
    besoin de réponses ? demande a un pote

  8. #8
    Membre régulier Avatar de elghadi_mohamed
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par toxcct
    elghadi quant à toi, quand tu dis :

    certes, si tu le dis, c'est que c'est surement vrai. mais nous de notre coté, on n'a aucune idée du message (exact) que le compilo t'as envoyé, donc si tu peux nous éviter l'usage des boules de cristal ...

    tu chercher le message tel qu'il est alors le voici :
    c:\documents and settings\administrateur\bureau\a.cpp(7) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is

    et bon appetit
    Soit A un succès dans la vie. Alors A = x + y + z, où x = travailler, y = s'amuser, z = se taire.

  9. #9
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    Citation Envoyé par toxcct
    enfin, il est préférable d'utiliser des méthodes standard plutot que des appels spécifiques au systeme d'exploitation. en d'autres mots, system("pause") ne marchera que sous windows, alors qu'un appel a getch() marchera sur toutes les plateformes (en pensant bien sur a faire un #include<conio.h> préalable).
    Presque.
    conio est tout sauf portable. C'est un résidu des compilos Borland pour dos et windows.
    La façon portable, et C++, de faire une pause est donnée dans la FAQ. Et ceci est un problème d'environnement de travail. Je n'ai jamais eu besoin de rajouter des pauses explicites.

    Sinon, elghadi_mohamed, pourrais-tu editer ton code ou le reposter pour nous montrer la version complète que tu cherches à compiler, STP.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Citation Envoyé par toxcct
    il est déconseillé d'utiliser une using namespace ayant une portée sur tout le module de traduction. il est préférable d'utikiser une telle directive dans une fonction ou dans un bloc interne a une fonction.
    Ça, c'est un peu extrême, ne trouves-tu pas?
    Du moment qu'on ne met pas de using namespace dans un header, on n'a pas vraiment de problèmes...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    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
    Points : 4 625
    Points
    4 625
    Par défaut
    Ça, c'est un peu extrême, ne trouves-tu pas?
    Moi je suis plutôt d'accord.
    De manière générale, using namespace c'est à éviter. Si tu dois le faire, fais-le dans la portée la plus petite possible.
    Boost ftw

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Points : 307
    Points
    307
    Par défaut
    On peut avoir des problèmes avec un using namespace partout. Le code suivante est relativement anodin :
    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
     
    #include <iostream>
     
    int distance(int const & from, int const & to)
    {
        return to - from;
    }
     
    int main()
    {
        using namespace std;
     
        int abc(0), xyz(0);
        cout << distance(abc, xyz);
     
        return 0;
    }
    gcc nous donne une superbe erreur concernant l'instanciation d'iterator_traits. D'où vient-ce ? Tout simplement du fait que deux déclarations de distance existent, celle présente dans le fichier, et celle de std::distance, définie dans <utility> et incluses par le #include <iostream>. Le using namespace met la déclaration de std::distance dans le namespace "global", le compilo doit alors faire un choix et fait ici le mauvais.

    Je ne me prononcerai pas sur le caractère standard de ce choix, ce qu'il faut souligner ici est la difficulté de diagnostiquer l'erreur de compilation due au using namespace. À moins de connaître parfaitement le contenu d'un namespace, ce qui est particulièrement difficile pour std, mieux vaut s'abstenir d'utiliser des using namespace, où que ce soit.

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Euh...
    Un bon compilo n'est-il pas censé générer une erreur "ambiguous call" ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Médinoc
    Euh...
    Un bon compilo n'est-il pas censé générer une erreur "ambiguous call" ?
    L'appel n'est pas ambigu: le nom importé par using dans le bloc masque le nom définit dans un scope englobant. C'est le point de roulious: à trop restreindre le scope du using, il importe des choses en masquant plutôt qu'en étant ambigu.

    Personnellement, je n'utilise using que quand je désire que ce soit l'ADL qui trouve un nom, et j'utilise alors la forme using name dans le scope le plus restreint possible. Sinon je qualifie.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

Discussions similaires

  1. Probleme avec string et variable.
    Par pierre987321 dans le forum Delphi
    Réponses: 3
    Dernier message: 26/04/2007, 13h22
  2. probleme avec string
    Par krovomi dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 28/02/2007, 17h15
  3. Probleme avec string
    Par Liondd dans le forum Langage
    Réponses: 11
    Dernier message: 29/12/2006, 19h02
  4. [RegEx]Probleme avec String.split
    Par sebastieng dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 09/02/2006, 21h24
  5. [Struts][logic:iterate] Probleme avec String
    Par julienOriano dans le forum Struts 1
    Réponses: 7
    Dernier message: 15/06/2004, 09h39

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