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++/CLI Discussion :

Utilisation de la classe string dans Visual C++ 2010 Express


Sujet :

C++/CLI

  1. #1
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut Utilisation de la classe string dans Visual C++ 2010 Express
    Peut on utiliser la classe string dans visual C++ 2010 Express.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string chaine;
     CString chaine2;
    Ne fonctionne pas

    J'ai pourtant mis les includes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h> 
    #include <stdlib.h> 
    #include <string.h> 
    #include   <cstring> 
     
    #include   <cstdlib> 
    #include <string>
    Dans stdafx.cpp ou dans stdafx.h rien n'y fait.

  2. #2
    Membre actif
    Homme Profil pro
    Ingénierie des systemes embarqués temps réels
    Inscrit en
    Juin 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénierie des systemes embarqués temps réels
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2006
    Messages : 152
    Points : 231
    Points
    231
    Par défaut
    Citation Envoyé par Gilles57-H-G Voir le message
    Peut on utiliser la classe string dans visual C++ 2010 Express.

    string chaine;
    CString chaine2;

    Ne fonctionne pas

    J'ai pourtant mis les includes :
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <cstring>

    #include <cstdlib>
    #include <string>

    Dans stdafx.cpp
    using namespace std;

    et
    CString chaine2;
    ne se fait pas.

    attention au melange des headers c style et les headers c++
    #include <string.h>
    #include <cstring>

  3. #3
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    J'ai pas dis que j'ai fait juste.

    Je cherche comment utiliser la classe string en visual C++ Express.

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2003
    Messages : 43
    Points : 57
    Points
    57
    Par défaut
    CString est spécifique à Microsoft et fait partie du framework ATL/MFC, non disponible avec Visual Studio Express (en clair, il faut payer pour en profiter).

    Tu peux te tourner vers std::string (#include <string>) qui remplace très bien CString, et qui a l'avantage d'être portable.

  5. #5
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    J'ai fait un include de :

    #include <string>

    dans stdafx.cpp

    puis j'ai écrit

    string chaine;



    cela ne fonctionne pas string n'est pas reconnu.

  6. #6
    Membre émérite

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Points : 2 252
    Points
    2 252
    Par défaut
    std::string, comme tous les autres composants de la bibliothèque standard C++, se trouve dans le namespace std.
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     #include <string>
    std::string chaine;

  7. #7
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    dans stdafx.cpp
    Puis dans Form1.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::string chaine;
    dans un commande ne fonctionne pas

    je l'avais déjà essayé.

  8. #8
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par Gilles57-H-G Voir le message
    dans un commande ne fonctionne pas
    Peux-tu préciser ce qui se passe exactement ?

  9. #9
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    Je récapitule .

    Voulant utiliser la classe string avec Visual C++ 2010 Express.

    (1) Je crais un projet : Aplication Windows Form.

    (2) Je le nomme toto.

    (3) Je met : dans stdafx.cpp

    (4) Je dessine un bouton sur la form dans Form1.h [desing].


    (5) Je double click sur ce bouton pour afficher la form1.h.


    (6) je met dans la commande du bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
     
    			 {
     
                             string chaine;
    			 }
    (7) Cela m'affiche :

    c:\documents and settings\administrateur\mes documents\visual studio 2010\projects\toto\toto\Form1.h(81): error C2065: 'string'*: identificateur non déclaré

    Si je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
     
    			 {
     
                          std::string chaine;
     
    			 }
    J'ai l'erreur :

    c:\documents and settings\administrateur\mes documents\visual studio 2010\projects\toto\toto\Form1.h(81): error C2039: 'string'*: n'est pas membre de 'std'


    Faut il faire l'include dans stdafx.cpp ?

  10. #10
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Il faut inclure <string> dans le fichier où tu utilise std::string. Est ce bien le cas (en lisant ta description j'ai plutôt l'impression que tu as mis l'include dans stdafx.cpp et que tu l'utilises dans Form1.h).

    Au passage, ce que tu montres n'est pas du C++ mais du C++/CLI

  11. #11
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    Donc en somme, vu que tu fais du C++/CLI, tu utilises System::String de C++/CLI...

    Il existe des moyens de convertir les chaines C++/CLI et les chaines C, C++; mais c'est plus une question d'interopérabilité.

    http://dotnet.developpez.com/faq/cpp...age=conversion

    Pour le C++/CLI, je te conseille la faq dédiée.
    http://dotnet.developpez.com/faq/cppcli/?page=sommaire

    Sache que C++/CLI à rien à voir avec du C++ et que c'est plus à mon sens un langage intermédiaire pour faire remonter du code C/C++ natif dans le monde dot net.

    Bonne continuation

  12. #12
    Membre émérite

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Points : 2 252
    Points
    2 252
    Par défaut
    Ah mince, j'avais pas vu.
    Citation Envoyé par Gilles57-H-G Voir le message
    (3) Je met : dans stdafx.cpp
    stdafx.cpp ?
    Si tu veux utiliser les entêtes précompilées alors il faut placer tes includes comme <string> dans stdafx.h

    A la génération, stdafx.cpp ne contient quasiment rien à part un include de stdafx.h et un énorme avertissement comme quoi il ne faut surtout pas mettre d'autres include dans ce fichier !

    Citation Envoyé par stdafx.cpp
    #include <stdafx.h>
    // TODO: reference any additional headers you need in STDAFX.H
    // and not in this file
    Edit :
    Pour le C++/CLI.
    C'est clair que comme langage d'intéropabilité entre C# et C++ c'est un outil précieux. Par contre faire de l'interface graphique en C++/CLI... il faut aimer la souffrance. Autant faire la GUI directement en C#, quitte à ensuite ajouter quelques wrapper C++/CLI pour faire communiquer cette GUI avec le code métier écrit en C++ (je suppose)

  13. #13
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut Ok Résolu en partie.
    Utilisation de la classe string.

    #include <string>
    dans le Form1.h

    Puis dans le Form1.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
     
     {
             using namespace std;
                          string chaine;
                                 chaine = "super pour l'instant ";
     
                                                                                   }
    Ne pose pas de problème, quand à son affichage, c'est un peu plus difficile.

    je cherche à l'afficher dans une ListeBox.

    Impossible de faire Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      listBox1->Items->Add (chaine);

  14. #14
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62

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

Discussions similaires

  1. [Débutant] Bases de données dans VISUAL BASIC 2010 EXPRESS
    Par DJOUFOU dans le forum VB.NET
    Réponses: 1
    Dernier message: 09/07/2014, 18h01
  2. Commande Refactoring dans Visual Studio 2010 Express
    Par Moez.B dans le forum Visual Studio
    Réponses: 0
    Dernier message: 24/07/2013, 03h58
  3. Passer de VB à C# dans Visual Studio 2010 express edition
    Par Claude_Azoulai dans le forum Visual Studio
    Réponses: 2
    Dernier message: 15/03/2013, 16h29
  4. UML class Diagram dans visual studio 2010
    Par obiflo dans le forum Visual Studio
    Réponses: 3
    Dernier message: 09/06/2010, 16h08
  5. Réponses: 3
    Dernier message: 28/11/2006, 03h51

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