Déclarer un String

Signaler
Messages postés
438
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011
-
Messages postés
33
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
24 novembre 2011
-
Bonjour à tous,

Maitrisant maintenant le VB & C#, je me mets sérieusement au C++, c'est toujours sympa de connaitre un autre langage
Une petite question, j'ai commencé à bidouiller et à chercher comment déclarer un String ! Truc tout simple
Je m?aperçois qu'il y?a 2 méthodes :
std::string MaVariable;
A condition d'importer cet espace de nom d'après ce que j'ai compris, ce n'est pas inclus par défaut en C ++ : #include <string>
Si je veux afficher cette dernière dans un msgbox :
MessageBox::Show(MaVariable);

Et la je me rends compte que sa ne marche pas ! Alors j'ai découvert l'autre méthode :

String^ MaVariable2 ="un message ici";
MessageBox::Show(MaVariable2);

Et la sa marche !

J'aimerai savoir pourquoi, si quelqu'un avait une explication et pourquoi il y?a 2 méthodes pour déclarer des String ?
Sachant que la deuxième n'a pas besoin d'importer un espace nom, est-elle plus simple ? Plus rapide ? Quelles différences ?

Merci pour votre aide

5 réponses

Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
je ne connais pas String.
Mais pour ce qui est de sdt::string, c'est une classe, donc la MessageBox ne s'est pas afficher une classe. Il faut que tu utilises la méthode qui retourne une chaine de caractères : MaVariable2.c_str();
Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
8
Bonjour,
je crois qu'il ne faut pas confondre les packages provenant de C++ tel que std::string et les classes provenant de .NET comme String; de plus il y a encore la classe CString des MFC.
Cherche ces différents éléments dans MSDN afin de bien cerner la différence.


louis
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
114
Attention, ne confonds pas le "vrai" C++ du pseudo-C++ managé en .Net, qui n'en est pas !

En C++, on utilise des std::string, et il n'y a pas de pointeur .Net du style "^".
Si tu fais du C++ managé, alors l'intérêt est très faible. Autant faire du C# (qui est plus adapté et beaucoup plus sympa).

Si tu veux vraiment faire du C++ (par curiosité) alors tourne toi vers du C++ non-managé (normal en fait). Par exemple, tu peux essayer QtCreator qui permet de faire des applications C++ fenêtrées portables, ou d'utiliser Visual Studio et de faire des applications consoles en pure C++. Tu peux aussi faire des applications en API windows, à l'ancienne.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
438
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011

Bonjour à tous,

et merci pour vos réponses,
je pense avoir compris, c'est vrai lorsqu'on rapprend un nouveau langage, on à l'impression de repartir à zéro. Quoi qu'il en soit beaucoup de personne mon conseillé de débuter par C, et pourquoi pas la suite attaquer le C++, je pense que c'est ce que je vais faire pendant mon temps libre.

Encore merci à tous pour vos réponses :)

Note : sa fait longtemps que j'avais pas posté, j'ai l'impression IE9 & CS ne font pas bon ménage
Messages postés
33
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
24 novembre 2011

Salut a tous!!!

En Visual C++ un textBox par exemple n'affiche pas un std::string (a moins de le convertir) mais il affiche un System::string (c'est a dire un string^)
C'est exactement le probleme que tu rencontres
Donc pour le string^ MaVariable2 ca marche normalement, mais pour std::string MaVariable ca ne marche pas. (Mais le std::string peut avoir son interet ca depend de ton application)

Tu peux declarer un std::string et le convertir en string^ comme suit:

String^ MaVariable2 = gcnew String(MaVariable.c_str());
Dans ce cas tu peux afficher MaVariiable2 normalement.